{
 "cells": [
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# 人工智能的创世纪\n",
    "本节内容来源于 [徒手实现多层感知器--人工智能的创世纪](https://www.bilibili.com/video/BV1mm421N7nq) ，之前有学习过杰哥的 MLP 模型搭建，\n",
    "现在来看一下唐一旦老师讲的更加系统的 MLP 模型的搭建。\n",
    "\n",
    "由于在之前已经学过部分 MLP 的内容，所以此处笔记仅做我之前没有理解的，本节所有内容围绕这一张图片（设计成矩阵一是为了同时送入多个数据，二是为了可以让 GPU 并行运算）：\n",
    "\n",
    "![](images/多层感知器.png)"
   ],
   "id": "9f1610150fc6e375"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-08-14T06:39:10.741792Z",
     "start_time": "2025-08-14T06:38:50.834255Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 之前课纲中的内容\n",
    "import torch\n",
    "import torch.nn.functional as F\n",
    "from sklearn.datasets import make_moons\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "torch.manual_seed(1024)\n",
    "\n",
    "\n",
    "class Linear:\n",
    "\n",
    "    def __init__(self, in_features, out_features, bias=True):\n",
    "        '''\n",
    "        模型参数初始化\n",
    "        需要注意的是，此次故意没做参数初始化的优化\n",
    "        '''\n",
    "        self.weight = torch.randn((in_features, out_features), requires_grad=True)  # (in_features, out_features)\n",
    "        self.bias = torch.randn(out_features, requires_grad=True) if bias else None  # (             out_features)\n",
    "\n",
    "    def __call__(self, x):\n",
    "        #           x: (B, in_features)\n",
    "        # self.weight:    (in_features, out_features)\n",
    "        self.out = x @ self.weight  # (B, out_features)\n",
    "        if self.bias is not None:\n",
    "            self.out += self.bias\n",
    "        return self.out\n",
    "\n",
    "    def parameters(self):\n",
    "        '''\n",
    "        返回线性模型的参数，主要用于参数迭代更新\n",
    "        由于PyTorch的计算单元就是张量，\n",
    "        所以此次只需将不同参数简单合并成列表即可\n",
    "        '''\n",
    "        if self.bias is not None:\n",
    "            return [self.weight, self.bias]\n",
    "        return [self.weight]\n",
    "\n",
    "\n",
    "class Sigmoid:\n",
    "\n",
    "    def __call__(self, x):\n",
    "        self.out = torch.sigmoid(x)\n",
    "        return self.out\n",
    "\n",
    "    def parameters(self):\n",
    "        '''\n",
    "        Sigmoid函数没有模型参数\n",
    "        '''\n",
    "        return []"
   ],
   "id": "2bfea7f738e746c7",
   "outputs": [],
   "execution_count": 1
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-08-14T07:08:14.888430Z",
     "start_time": "2025-08-14T07:08:14.883513Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 这里唐一旦老师想要去解构模仿 torch 中的 nn.torch\n",
    "class Sequential:  # 这个单词有 “顺序” 的意思\n",
    "\n",
    "    def __init__(self, layers):\n",
    "        # layers 表示模型的组件\n",
    "        self.layers = layers\n",
    "\n",
    "    def __call__(self, x):\n",
    "        for l in self.layers:\n",
    "            x = l(x)\n",
    "\n",
    "        self.out = x\n",
    "        return self.out\n",
    "\n",
    "    def parameters(self):\n",
    "        return [p for layer in self.layers for p in layer.parameters()]\n",
    "\n",
    "    def predict_proba(self, x):\n",
    "        # 计算概率预测\n",
    "        if isinstance(x, np.ndarray):\n",
    "            x = torch.from_numpy(x).float()\n",
    "\n",
    "        logits = self(x)\n",
    "\n",
    "        # 此处说明一下为什么需要 detach().numpy()\n",
    "        # 只有不需要 required_grad 的 tensor 才可以转化为 numpy\n",
    "        # 而 detach 函数的作用就是将这个 tensor 复制（共享内存）为一个不需要计算梯度的 tensor\n",
    "        # 有时候如果 tensor 在 gpu 上还要加一个 .cpu()\n",
    "        self.prob = F.softmax(logits, dim=-1).detach().numpy()\n",
    "        return self.prob\n"
   ],
   "id": "f25c82ff89e6a8c4",
   "outputs": [],
   "execution_count": 37
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-08-14T06:54:49.568556Z",
     "start_time": "2025-08-14T06:54:49.556706Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# x: (B, 2)\n",
    "# mlp: [4, 4, 2]\n",
    "model = Sequential([\n",
    "    Linear(2, 4), Sigmoid(),  # (B, 4)\n",
    "    Linear(4, 4), Sigmoid(),  # (B, 4)\n",
    "    Linear(4, 2)\n",
    "])\n",
    "\n",
    "x = torch.randn(3, 2)\n",
    "print(model(x))\n",
    "print(model.predict_proba(x))"
   ],
   "id": "e0bdad4ecb799803",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[-0.5756,  0.0729],\n",
      "        [-0.5902,  0.0307],\n",
      "        [-0.5812,  0.0562]], grad_fn=<AddBackward0>)\n",
      "[[0.34332383 0.6566762 ]\n",
      " [0.3495752  0.6504248 ]\n",
      " [0.34582344 0.65417653]]\n"
     ]
    }
   ],
   "execution_count": 5
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-08-14T06:55:53.404754Z",
     "start_time": "2025-08-14T06:55:53.399703Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 数据可视化的内容并不是重点这边直接 cpoy\n",
    "def draw_data(data):\n",
    "    '''\n",
    "    将数据可视化\n",
    "    '''\n",
    "    fig = plt.figure(figsize=(5, 5))\n",
    "    ax = fig.add_subplot(1, 1, 1)\n",
    "    x, y = data\n",
    "    label1 = x[y > 0]\n",
    "    ax.scatter(label1[:, 0], label1[:, 1], marker='o')\n",
    "    label0 = x[y == 0]\n",
    "    ax.scatter(label0[:, 0], label0[:, 1], marker='^', color='k')\n",
    "    return ax\n",
    "\n",
    "def draw_model(ax, model):\n",
    "    '''\n",
    "    将模型的分离超平面可视化\n",
    "    '''\n",
    "    x1 = np.linspace(ax.get_xlim()[0], ax.get_xlim()[1], 100)\n",
    "    x2 = np.linspace(ax.get_ylim()[0], ax.get_ylim()[1], 100)\n",
    "    x1, x2 = np.meshgrid(x1, x2)\n",
    "    y = model.predict_proba(np.c_[x1.ravel(), x2.ravel()])[:, 1]\n",
    "    y = y.reshape(x1.shape)\n",
    "    ax.contourf(x1, x2, y, levels=[0, 0.5], colors=['gray'], alpha=0.4)\n",
    "    return ax"
   ],
   "id": "aca76f1eef9d68fb",
   "outputs": [],
   "execution_count": 7
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-08-14T06:58:22.380837Z",
     "start_time": "2025-08-14T06:58:22.303640Z"
    }
   },
   "cell_type": "code",
   "source": [
    "data = make_moons(200, noise=0.05)\n",
    "draw_data(data)"
   ],
   "id": "6f198425e7f000e5",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAAGsCAYAAABO5qdvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAV+5JREFUeJzt3Xt8FPW9P/7XbiAbQUmKucKhEFC5FAUBEwNWEKJQrcVWOYIoSCkSJZZLi4KngBQ1IlRR4CuUqhwSCGJ/olYpCAG0seEil6NcVQiXAgkJkQSDhCT7+f2Bs+5uZnZmdnd2Z2dfz8dj/2AzuztLdvOez+X9ftuEEAJERERRyh7uEyAiIgonBkIiIopqDIRERBTVGAiJiCiqMRASEVFUYyAkIqKoxkBIRERRrVm4TyDYnE4nTp8+jWuuuQY2my3cp0NERGEihMCFCxfQpk0b2O3K4z7LBcLTp0+jXbt24T4NIiIyiZMnT+K//uu/FH9uuUB4zTXXALjyxlu1ahXmsyEionCpqalBu3btXHFBieUCoTQd2qpVKwZCIiJSXSbjZhkiIopqDIRERBTVGAiJiCiqMRASEVFUYyAkIqKoxkBIRERRjYGQiIiiGgMhERFFNQZCIiKKagyEREQU1RgIKSoJIbBz504IIQw5nogiBwMhRaWCggJkZGRg5cqVANQDnffxRGQdDIRkKVpGbg0NDZg1axYAYNasWWhoaPAZ6OSOJyLrYCAkS9EycissLERpaSkA4OjRo1i5cqXPQOd9/OrVqw06eyIKB5uw2KJHTU0N4uPjUV1dzTZMUaahoQE33HADSktL0bFjRxw+fBjNmjWTPebYsWMQQsBut+Paa69FRUWF65j8/Hw8/PDDisd36NChyXMLIfD555+jT58+qi1flATjOYjoR1rjAUeEZBlaRm7SMdL1n9PpREVFhSvw2O12j1Gh3PFyzx2MNUSuQxKFB0eEZAlaRm7ex/iSn5+P4cOHyx7v/dxaRqJazz+Q5yAiTxwRkiyrpgFoGbl5H6NEGhUWFBTIHu/93MFYQ+Q6JFEYCYuprq4WAER1dXW4T8WUVqxYIQCI/Pz8kL6u0+kUO3bsEE6nM+jPXV9fL9LT04XNZhMAXDe73S46duwo6uvrFY/xdUtKSlI8Xnru77//3uN53V/T3/P35zmIqCmt8YAjwigSzjQAI9e/lEZ67iO34uJiTaNBic1mQ0VFheLx0nP/+c9/1rSGqOf8/XkOIvIf1wijSH5+PkaNGuXxb2l3pJGMXP9SW/eT1vO++OILrFu3DnV1dQCAgwcP4oUXXlB9/meeeQZdu3aV/VmzZs0wffp0HD9+3Ocaoj/nr+c5iEie5nhg5LD0k08+Eb/85S9FWlqaACDWrl2r+pgtW7aIm2++WcTGxopOnTqJt956S9drcmpUXjin36TpWOnmPS0byLTpli1bNE1zbtmyxeNxly5dEmvWrBH5+fmKtzVr1ohLly5pfl/eNy3Tz8F4DiKSpzUeGDoi/Oc//4nPPvsMvXv3xm9+8xusXbsW9913n+LxpaWl6N69O3JycvC73/0ORUVFmDRpEj766CMMHjxY02tyRCjPezTofr+Ro0Ituzmlc/PnXOrq6vDBBx+4RnpyHA4HfvWrX8HhcAQtV0/rSNTXiC4Yz0FEykwxInQHDSPCp556SvzsZz/zuO/BBx8UgwcP1vw6HBE2pWUziVGURjzSSEc6NwAhGaEGa7OQvyPRYD8HESnTGg9MdZlZUlKC7Oxsj/sGDx6MSZMmKT6mrq7OYzRQU1Nj1OlFLPet+e7cN2UYMSqUNufYbLYm61+zZs3C8OHDZdMGjBqhem8WGj58uN8jraysLKxZs0Z1JJqVlWXocxBREIQmLmsbEV5//fXihRde8Ljvo48+EgDExYsXZR8za9Ys2atojgivUEsbMHJUqLb+tXz58pCuW6qtVcoxMu2DiIwVNekT06dPR3V1tet28uTJcJ+SqailDUijwuLi4qC+rvtoUI7dbsfUqVNDljbgfT7epdSUsOwZkfWZamo0NTUV5eXlHveVl5ejVatWuOqqq2Qf43A44HA4QnF6ESlc029SAFbiXuNTKEybBnODiPf0sJZp4WBOpRKReZnqW52VlYV169Z53Ldx40aukQTA4XBg2LBhIX9dtQBcXFyMpUuX+kyCD9ZaoZa1SrkAF8r1SyIKIyPnZy9cuCD27Nkj9uzZIwCIl19+WezZs0ccP35cCCHEtGnTxCOPPOI6/ujRo6JFixZi6tSp4uDBg2Lx4sUiJiZGrF+/XvNrcteo+QWybunPmp0/uXose0YU+bTGA0MDodL28NGjRwshhBg9erTo379/k8f07NlTxMbGio4dOzKh3kKkILZ582a/0wb0pj/4G3TV0j6IyPxMkVAfDkyoNy8pcf7NN9/E1VdfjaKiIixduhQ5OTno16+fx7HuSfASf0q1bd26FXfccYfquW3ZsgUDBgzweB2WPSOKbKZLqA8VjgjNyTtxXuraIP1by5SjP+kPUim15cuXi6SkJNdjbTabSEpKEsuXL29SSo1lz4isIWrSJygyeG88mTRpkq7+e1rSH4RMr0Vps5DdbkdFRYXHsRUVFYiJicGwYcNcI08taR9yaRdyr62Fv48L1/MSWZKx8Tj0OCI0H7mNJ82aNdOV1K9lzU5p/VBPiTl/y575W7rNqP6Q4eo7SWQmXCPkGqFpKBX8ljtOLj1By5odAMX1Q7XXd39dvUW83c/P19qlkCn27f24goIC3HrrrQEVA9d6PkTRgGuEHBGagtbO8L5GhVrW7JTWD0NRYk7L2qXcCE3ufQVjBOfPWiqRFZkifSIcGAjNRS2Ied9mz57tkSOoJZClp6eLDh06yOb8Gd3hQUu+oVyHDaX3lZ6eHlBQZv4j0Y8isvsEWYtSRRclNpsNs2bNQvv27TF69GgA2kq1ef/cvTrNsGHDDC0xp6V0m1yFGiGE7PsqLS0NqIKNP6XkiKId1wjJMFpz+LylpaXhxIkTaNasmeqaXWNjI5566ilUVFSEPOdPz9qle2Pi9u3bQwiB48ePy14gpKen46uvvtJ93sx/JPKkNR7wW0GG8a43Wl9fj927d3ukHjRr1gy9evXC9u3bsXTpUgDAmTNnXCMYtVqp+fn5OHv2bJP7vUdCQkdneq3Haunz6D3ykxvBevN3VBiuvpNEEc+42dnw4BqhMYzsy+fvupaejTB60gm0HOvP2qWem961wnD2nSQyK26WYSAMKiPz0vyt66l1I8ymTZs0V7GR29gSyGsHctPzf230piCiSMQ8Qq4RBo0/eWlC4/RiIOtaWnP+Lly4gLFjx7ruU8pXlH7mnnOodKzWtUu5aVuJ3W6H0+mU/ZnNZkN6errmdT1/8h+JrI55hBwRBo1aXprctKnWEaTRdT31TLsGM/UgWCNGpRGckVPVRFbBESFHhEHhPWKTG6lJoyhp9KQ2ghQ/jBZ79uyJzp07NxkNSoKx21GpqozcSE/PsWrURmj19fX48ssvceONN6J58+auRsWSnJwcDBw4UHEEt2LFCowePRorVqzAI488ouvciKIFR4QcEQaF2vqd3Jqa2ghS+vkzzzxj6LqWnhqjeo4NNr0j0fr6epGYmCgAiKSkJG6AIVLAzTIMhAHTEhy8g97y5ct9/lF3D5zp6emisLBQ5OfnK968WyTpoWfaNZytl/RuFnrrrbea/J8TUVMMhAyEqtTWmdSCg1zQc+/5J/dHPVR1MPWkE4Qz9UDvSNR9NCjdOCokksdAyECoyteGFi3BQSnoKQUSqRlvKOpg6kknCGfqgd6RqPdokKNCImXcLMPNMj6pbWjxtzyaL+PHj/fYECLxZzOKGj3pBADCknqglDoi8d4s1NDQgLS0NFRWVjY5NikpCadPn2YJNSI3WuMBA2GUUsuXUwsk3rsc1dhsNsTExKCxsZF1MH+g9WJjy5YtGDBgAJYvX44xY8YoHrd8+XJXsXI5QkeZOSIrYCBkIFSkJSVCz+ODwYhRodnpGbXGxMQojgYlaqNC7zQXIqtjIGQgVBRovpzWkcwzzzyDrl27orGxEVOnTkVlZaVh+YJWV1RUhOzsbNXjNm3ahEGDBjW5n13rKRqx+0SUUpv+UuoRaLfbMWvWLAwfPlz1D6R3Vwk57mtqW7duRUVFheKxUneE4uJiDBgwQP1NRqHGxsaAjpPriai3KweRVXFEaDFq019Ko0H3n4dz4wrrYMqT+z+U1mlzcnLQr18/xf9DX1PhhYWFnC4ly+LUaBQGQrXpL7W1Pb2Fnil89Ex1Kl38LF++HLNnz+Z0KVmW1nhgD+E5kcHkpr/cFRcXo7S0VHGDixDCNUUp/Xvnzp1B2xBDwaP2u5a4T4W7s9vtmDp1qqbnILI6jggtQstOUF/Ta5Lc3FzMnz8fDoeDuwxNSul3fejQIezdu9djvU9tKlzCDUtkRSy6HWWVZfxpbuur2LPWBrUUekq/6/Hjx3v8ztWqA+n9vBBFGlaWiaIRob/NbX2lUQghNDWopdDy9bu22+1oaGhwrfcVFxfrqg7EUSFZDTfLWDwQCrdt7wUFBbp3gvr6g9q+fXsIIXD8+HG/Eu7JOFqnOvPz8zFs2DDZ3bpqVYF40UNWwalRi0+NStNj3h0gvG9Kha3Vij3L3ThtFl5apzptNpvidHY4O20QhZrWeMBdoxFI2gkIANOnT/e5E9Q9Wd378XoSqKWE+4aGhsBOnvymtutXIn7Y/Su3C1TtOeQ+L0RWZ/jU6OLFizFv3jyUlZWhR48eWLhwITIyMhSPX7BgAV5//XWcOHECiYmJeOCBB5CXl4e4uDhNrxcNU6Pe02O5ubnIzMxUPN470TqQzhKcNgsfuV2/Uvk678o9StPZ0nMUFRXJTo/m5ORg4MCBLG5AlmCKqdHVq1eL2NhY8eabb4r9+/eLcePGiYSEBFFeXi57/MqVK4XD4RArV64UpaWlYsOGDSItLU1MnjxZ82tafWrU105PrS5duiTWrFnTpBv88uXLRVJSEqfNIojefoZC6G8GrNbAmcisTNGYNyMjQ0yYMMH178bGRtGmTRuRl5cne/yECRPEwIEDPe6bMmWK6Nevn+bXtHog9CdNQqtwNqgl/fxd79MbPH01cCYys7CnT1y+fBktWrTA3//+d9x3332u+0ePHo3z58/j/fffb/KYVatW4YknnsDHH3+MjIwMHD16FPfccw8eeeQRPPPMM7KvU1dX5zFVVFNTg3bt2llyatTfNAmtWBM0sujtZwj41wyYXSsoUoW9+0RlZSUaGxuRkpLicX9KSgoOHTok+5iHHnoIlZWVuO222yCEQENDA3JychSDIADk5eVh9uzZQT13s3Ivq+VO2uAgdRTwl8PhwLBhwwI5RQohrV1AsrKyXP+WNsso8e4EotS1gshKDBsRnj59Gm3btsW///1vjy/iU089hU8++QTbt29v8pitW7di+PDheO6555CZmYlvvvkGEydOxLhx4zBjxgzZ14mWEaHeK3kiOXqbAQfSwJko3MI+IkxMTERMTAzKy8s97i8vL0dqaqrsY2bMmIFHHnkEv/vd7wAAN954I2pra/HYY4/hf/7nf2C3N832cDgcUTFNp/dKnkiOnlF/fn6+x2cuWDMPRGZjWCCMjY1F7969UVRU5FojdDqdKCoqQm5uruxjLl682CTYxcTEAEDUd0DwZxqMyF/BaOBMFCkM/SRPmTIFo0ePRp8+fZCRkYEFCxagtrYWY8aMAQCMGjUKbdu2RV5eHgDg3nvvxcsvv4ybb77ZNTU6Y8YM3Hvvva6AGK3cr+QFu4qTwYxejyYyFQN3rgohhFi4cKH46U9/KmJjY0VGRobYtm2b62f9+/cXo0ePdv27vr5ePPvss6JTp04iLi5OtGvXTjzxxBPi22+/1fx6Vk+fEILb2clYLMNGVhH29IlwsXplGV/b2YWGkaKWYyi6+ZOWQWRG7FBvUb46kxcUFCAjIwMrV65UfLyWYyi6SevR48ePB3Cl7Fp+fr7Hbc2aNVyPJsvgiDCC+OpCD0A18ZnJ0aQVPytkBRwRWpA0GpSuXdw3LvgaKXo/3tcxRAA/KxRdOCI0Ke+1vEAb6foaTfJKnyRCCGzbtg0jR47kZ4UiHkeEEc57Lc97NChxOp0oLS31CJDuI0WJr9EkkaSgoAB9+/blZ4WiCkeEJuS9PrN//35069ZNsbyaHLn1Q6OKdZM1NDQ04Prrr8exY8ea/IyfFYpEHBFGMO/1mTlz5mjqTO5Obv1QbjTJK32SFBYWygZBgJ8VsjaOCE1Gbi2vffv2eOGFF9DQ0OBxrFJ3conc+qHcMbzSjx5KeaS+RoMSflYo0oS96Db5x7u0lbQG2NDQ0KSk1datWxWDoPtjfWGx7uhSUFCAUaNGIT8/3+Pz5Gs0KOFnhayKI0IT0dt4V0tLHamIudPpVDyGzXajg1JuoPv97mw2GxITEzFv3jxXrV9+ViiScEQYgfQWOmYjXdJDqcmu0udOCIGKigrExMSwwDZZGkeEJsHGu2QkpTxStR3J/NxRJOOu0QgjNd5Vui5xX58h0kspj1RtRzI/dxQNeIlnEmy8S0bx1WS3sLAQhYWFTXYku+PnjqyOgdAk1Nb7pG3vsbGxITwrsgJfa89KO5KJogmnRiME2yeRP9xHg3LsdjtmzZrlc0ToixACO3fu1FXsgchsGAgjQENDA2bOnAkAmDlzpt9/tCj6GL32zAs0sgLuGo0A+fn5GDVqlMe/OZVFWmjJNfU3N5A9C8nstMYDBkKTkyt9lZ6ejq+++op/dCiseIFGZsf0CYuQK31VWlrK4scUVt5rj4GuNRKFEwOhibmvDXrjWiGFE/tbkpUwEJqYr0LIHBVSuCjtROWokCIVA6FJ+RoNSjgqpHBgf0uyGgbCMFPKwyouLlZti1NaWsrSVxRSanmJADgqpIjDQBhmSnlYt9xyC5KTkxX/4NhsNiQnJ+OWW24JxWkSAVDPSwTA2qQUcZg+EUa+8rC2bt2KO+64Q/U5tmzZwiapFDJyeYmffvopli1b5vr3E088gZdffpk9CynsmEcYAYHQVx6WkYnQRMHS0NCAtLQ0VFZWuu5LSkrC6dOnmedKYcdAaPJA6N0V3GazIT09ndU5KOykAu99+vTxuRYIAMuXL8eYMWNk7x89erRRp0ikCRPqTc67I4AQgjvuyBS01g9taGjA1KlTZX82depUbpihiMFAGAbSzjtvNpuNO+4orNw/m2qfxYKCAo8pUXcVFRUsxE0Rg4EwDJT6w3FUSOHm/tn09Vn0NRqUcFRIkYJrhCHmvTbojWuFFC7SZ/PYsWMQQsBut6NDhw6yn8WioiJkZ2erPuemTZswaNAgo06ZyCfTrBEuXrwYHTp0QFxcHDIzM7Fjxw6fx58/fx4TJkxAWloaHA4HbrjhBqxbt87o0wwZKQ9LiTQqZB4WhZqe+qGNjY2anlPrcUThZOiI8O2338aoUaOwZMkSZGZmYsGCBXjnnXdw+PBhJCcnNzn+8uXL6NevH5KTk/HMM8+gbdu2OH78OBISEtCjRw9Nr2n2EWFdXR3Wrl2L3//+96isrPRITLbZbEhKSsKrr76KX//610yLoJDxHg1KlEaF3uk9xcXFWLp0qevnOTk5GDhwINN7KKw0xwNhoIyMDDFhwgTXvxsbG0WbNm1EXl6e7PGvv/666Nixo7h8+bLm17h06ZKorq523U6ePCkAiOrq6oDP3ygrVqwQABRv+fn54T5FijKBfCbr6+tFenq6sNlsAoCw2+2iY8eOor6+PoTvgKip6upqTfHAsKnRy5cvY9euXR7rCHa7HdnZ2SgpKZF9zAcffICsrCxMmDABKSkp6N69O1544QWf0yt5eXmIj4933dq1axf09xJMarUaWcGfQi3QzyRbMlGkMywQVlZWorGxESkpKR73p6SkoKysTPYxR48exd///nc0NjZi3bp1mDFjBv7yl7/gueeeU3yd6dOno7q62nU7efJkUN9HsKnVapT+iHCNkEIlkM8kWzKRFZhqW6LT6URycjL++te/IiYmBr1798apU6cwb9482bw74EqZMTOvQQivKh1ZWVlYs2aNaum0rKysEJ4lRbNAPpNKqUDuo0KpbCCRu0anwI7SKpy9cAnJ18QhI701Yuy+KxkZxbBAmJiYiJiYGJSXl3vcX15ejtTUVNnHpKWloXnz5oiJiXHd17VrV5SVleHy5cuIjY016nQNU1BQgFGjRrnqiDocDgwbNizcp0Xk4u9n0n00KDealEaFw4cPZyoQeVi/7wxm/+MAzlRfct2XFh+HWfd2w5DuaSE/H8OmRmNjY9G7d28UFRW57nM6nSgqKlIc7fTr1w/ffPMNnE6n676vvvoKaWlpERkE9VTpIP81OgVKjpzD+3tPoeTIOTQ6LZUaa1qc5id/rN93Bo8X7PYIggBQVn0Jjxfsxvp9Z0J+ToZepk2ZMgWjR49Gnz59kJGRgQULFqC2ttZVpHfUqFFo27Yt8vLyAACPP/44Fi1ahIkTJ+LJJ5/E119/jRdeeAG///3vjTxNw8hV6eA0UXCZ7coymnCan/RqdArM/scByF06CQA2ALP/cQB3dksN6TSp4ZVlFi1ahHnz5qGsrAw9e/bEa6+9hszMTADAgAED0KFDByxfvtx1fElJCSZPnoy9e/eibdu2GDt2LJ5++mmP6VJfzJJHqKdKB/lHurL0/gBLX5/XH+7FYEhkIiVHzmHEsm2qxxWOuxVZna4N+PXYhinMgdC716D7/RwVBq7RKXDb3M1NplckNgCp8XEofnpg2BbgicjT+3tPYeLqvarHvTq8J4b2bBvw65mmxFo0CnRLuRACO3fuVFx7IWBHaZViEASuTLOcqb6EHaVVoTspIvIp+Zq4oB4XLAyEBvBOMJZoTTTW2g8ump29oBwE/TmOjMWLOwKAjPTWSIuPg9IcjQ1X1vgz0luH8rQYCIMt0Cod3GmqjVmvLEkeL+4IAGLsNsy6txsANAmG0r9n3dst5MsZDIRBFsiWciEEnn/+eU394KKdWa8sqSle3JG7Id3T8PrDvZAa73mRmhofF7YNbtwsE2TeVfnlOBwO2ar8y5cvx5gxY1wJytxp6pu0axSAx85R7ho1F++NY9wwRkBoKstw16hJ2zApaWhoQFpaGiorK5v8jH84lDGP0NyYRkThxEAYpkDoXVtUK2k06I1/ONSZqWYheWIaUXQyy3eSgTBMgVD64uv5ovsaDbo/L/9wUCTR2+yXrMFMszTMIwwDfzcFFBQU+AyCbGlDkUgtjaiwsDBMZ0ZGMWMdUS0YCINIrraomoaGBkyfPt3nMSxeTJFGLY0IAP74xz/y4s5C1OqIAlfqiJqxKD4DYZB4f/G1juIKCwsVGxUDQE5ODvLz87FmzRoWL6aIoZZGBABnz57FJ598EsKzIiNFcrUnBsIg8Z4G0lJFRkvy/ccff4zhw4dj2LBhpm5ATOQuKysLubm5Hvfl5ORg/PjxHvedOHECACvPWEEkV3tiIAwCf2uLsp8bWVVMTAw++ugjjxmSDRs2YMOGDa77bDYbnnvuOTQ0NLDyjAVEcrUnbtkKAve1QXfuo0K5HZ/s50ZW5f2dcDqdTb4jQggcPXoUK1euxOzZswGAHe0jmFTtqaz6kuw6odQRxozVnpg+ESClLeISbhUPD7PkMUUjte+EO5vNhsTERFRUVLjuY6pQ5DJbtSfmEYYoEG7duhV33HGH6nFbtmzBgAEDDD8fMlceUzRSSqLXgheOkc9M3z8GwhAFwkBqi1LwsWt9eOkZDfrCUWFkM8uMDANhhJVYo8Cxa334aZ0h8YWjQgoWrfGAn7IgKygowKhRo7BixQp06dKFATGE9OQxZXW6NnQnFkXkNoDV19ejsLAQGzdu1PQcapvMyNrCMZrkiDCIpGmh0tJSJCUloaKiglM8IfT+3lOYuHqv6nGvDu+JoT3bGn9CBMC/6VKOCqNTsNcXWWs0DNy3jEu74FgjNHQiOY/JyrRUmfHGHNroE846pbzUChL3pHr3L7zcFA/XEY0RyXlMVqY0Xbp7927XRWKzZs3Qq1cvNG/e3HUMc2ijh1qdUhuu1Cm9s1uqIdOknBr1g1wgU9oybrPZkJ6e7jHF40+rJtLGbHlMRKSu5Mg5jFi2TfW4wnG36lrf59SogbzLQfmqGSpVz5Bqjvrbqom0GdI9Da8/3Aup8Z7Tn6nxcQyCRGHU6BQoOXIO7+89hZIj5zy6UIS7TilHhDq5b4jp2LEjDh8+jMLCQp8JxO6jQu9jOSo0hlnymEgfLhtYk9omGI4II4x3z8GVK1eq9l1zr6noT6sm0i/GbkNWp2sxtGdbZHW6lkEwQrD4tvVo2QQjre8rfUttuBI4jVrf54hQB+9t4Ha7HSkpKThzRn03k1xNRQlHhUTysy1MnYhseopcbDxQFvT1fY4IDSDXc/DMmTPIzc3FM8884/OxQgjZIMhRIdEV3rMtvnp5UmTQU+QinOv7HBFqpJQULCX+fvHFF1i3bp1izdHi4mIsXbpU8fk5Kgw9riOah9xsCxPqI58/RS6C+b1kibUgU+s5uHbtWjz88MOyi/0NDQ2YOXNmkxxDiTQqZB+20DFThXyS71/IMmuRz58iF9L6fihxalQDX+kRgOf0ptxiPzvRm0s4K1hQU0rfLy4bRL5wb4LRilOjGmitqL9p0yaMGzcOpaWlaNOmDY4dO4bmzZuzVZOJsEOF+aj1L+SyQWQLZ5ELU7VhWrx4MebNm4eysjL06NEDCxcuREZGhurjVq9ejREjRmDo0KF47733NL2WEYFQayC7cOECxo4d67ovJycHr7/+elDOgYLDqHwl8o9aQW6uFVqD3FJE65bN8dzQ7rj7pjaGva5p1gjffvttTJkyBUuWLEFmZiYWLFiAwYMH4/Dhw0hOTlZ83LFjx/DHP/4RP//5z40+RVUOhwPDhg3zeYz0hXb3t7/9Da+88gri4ljk2SzCXcGCPEnLBkrclw0GDBgQuhOjoBrSPQ1OJ/Cn9/ehqvYyAKCqth5zPjoIu90W9nV5wwPhyy+/jHHjxmHMmDEAgCVLluCjjz7Cm2++iWnTpsk+prGxESNHjsTs2bPxr3/9C+fPn1d8/rq6Oo+RWk1NTVDPXyu5zTQNDQ2YPHkyR4Umwg4V5iJXkNsbi29HvvX7zmDCqt1NimpL6/LhLn9oaCC8fPkydu3ahenTp7vus9vtyM7ORklJieLj/vznPyM5ORljx47Fv/71L5+vkZeXh9mzZwftnP3hXj/UG0eF5sIOFeaiZbZFwvJrkSncnSW0MHTXaGVlJRobG5GSkuJxf0pKCsrKymQfU1xcjDfeeAPLli3T9BrTp09HdXW163by5MmAz1svpdQK4MdRIRnPV1FfSYzdhln3dgOAJjvZpH/PurcbN8qYEMuvRSY9SfXhYqr0iQsXLuCRRx7BsmXLkJiYqOkxDocDrVq18riFkq/RoORvf/sbLl3impOR1u87g9vmbsaIZdswcfVejFi2DbfN3SybCsEOFZGHXVsiVySsyxs6NZqYmIiYmBiUl5d73F9eXo7U1NQmxx85cgTHjh3Dvffe67rP6XReOdFmzXD48GF06tTJyFPWTW2xH7jyJZ4zZw6ef/75EJ1VdJG2Z+tZfxjSPQ13dktlZZkIIVd+jSkVkSES1uUNHRHGxsaid+/eKCoqct3ndDpRVFQku/jdpUsXfPnll9i7d6/r9qtf/Qp33HEH9u7di3bt2hl5un7JysrCE0884fMYm82GwsJCXsUaQG39Abiy/qA0TcoOFebnnXDPRHvzklueiISkesN3jU6ZMgWjR49Gnz59kJGRgQULFqC2tta1i3TUqFFo27Yt8vLyEBcXh+7du3s8PiEhAQCa3G8WMTExePfdd30eI4RAaWkpt4AbQM/6A/MCIxPLr0UGX2ULZ93bDY8X7IYN8kn14V6XNzwQPvjgg6ioqMDMmTNRVlaGnj17Yv369a4NNCdOnIDdbqqlSl0KCwtlN/7k5OSgX79+rn9zC7gxNh2Q33TljXmBkcl9NOhd7J71ec1Dy/LE6w/3ahIoU01S35cl1gKg1pGC1TCMtX7fGeT8ULpJDSvFRCaWXzM/tbKFwJUqMtumZyPGbgvpujz7EYaAd39CifvUDRlDWhtUY4b1B/KPnmL3FD5qyxPAlSoyt+YVYeOBMlOuyzMQ+olf0vDS8uUDrqxHSHmDvnIMteQgUmixa0tk0LrsUFV7GTkm7e7CeTs/sUZieGn98v22XwcAaDJ14957kL0JzSkrKwu5ublYtGgRcnJyIITwaG6dk5ODgQMHcu09zPSmPUx798uwVpGRwzVCP7G1Unhp7SIxOfsGLNj0VZNFfOkr+Njt6fjrp6WKP2eCfeh4l1CT1uBLS0uRnp4OIQSOHz/ODvYmI60RKpUtlDM5+wZMzL7e0PMCTNaGKZRCuVmGwkfty2cDkNLKAcCGshrl3oM2G6A0C8rehMZQqhkqbYyRNsCobZSRHsPNMuGntGtUSUKL5tj1pzsN/15xswxZmpaaoSMyfqoYBIEr64e+lgLNUAPRiuRqhnqXULt06ZLPNXiA6/BmIpUtbN2yuabjz1+sN9X3ioGQIpZSzdDWLWOx+KFe6JDYMiivwxzE4FGqGepdQm3SpEk+N8oA3J1tNkO6p2Hb9Gy0dMRoOt5M3ysGQopoQ7qnYcY9XT2uRM/VXsacjw7gWGVtUF6DvQmDR65mqPcObJvNhjfeeENTqyWOCs0ltpkdj/28o6ZjzfS9YiCkiHal4eceVNXWe9xfVn0Jr2z6GgktmvuscehriYI5iMGlVDO0oKDAY/QnhEBDQ4PP0aCEKRTmkzvweiS0UJ4iNeP3itutKGJpafgpUapxOO7nV3aNQuHn4a6BaCVKNUOfeuqpJiXUlNhsNiQlJeGll15CTMyVKTiWLzSXGLsNL/7mRtnNM2b9XjEQUsTSUnD7/MV6TM6+Aat3nlCscXjzT39i2hqIVqFUM9Rms6GiokLz8wghcPbsWbRv3575uSYmrd9HyveKgZAiltbF9g6JLVD89EDFGofsTWg879GgxNco0GazITExEfPmzYPdbnflE8bFxXEEGAEi6XvFQBgApXwoCg09DT+l3oNK1H5O/lMaDaoRQqCiogLt27fHyZMnMWvWLOTn52PYsGEGni0FU6R8rxgIA1BQUOCRAEyhJTX89JVUn2qyRflopFaOUPLMM8+ga9euHvc5HA7ccsst+O1vfwsAbL1EhmBlGT+5l3/q2LEjSz2FiVTRApDf7MISaeEXaDlC7wozvPAkrVhizeBAuGLFCowePdr1b345w4dFs63Lu+cna4ySHgyEBgbChoYGtGnTxrXbjV/O8Gt0iohYlCd9lOqN8sIzcoTzu8lAaGAgXL58OcaMGdPkfn45iYLHezQo4YVn5Aj3bA2LbhukoaEBTz31VJP7WeqJKLiklAvva3XWGI0M0vq9d65vWfUlPG6yBr0MhDoVFBTIJgDzyxk52I3e/LzLsXnjhae5qVV9AoDZ/zhgmu8e5xV0UBoNSqQvJ7d3m1e4p2pIG7WUC/cao6wwE15ya4Baqj5JLc7MkGfIv9YaCSGwdOlSn+Wg+OU0N6XmodJUDVMtzCMrKwtr1qxRTblghZnwUrqwvLt7qqbHm6UVEwOhRgUFBcjNzfV5TE5ODgYOHMgvpwlpKdA9+x8HcGe3VO42NQGHw4EHHniAlZtMzNeF5RufHdP0HGZpxcQ1Qg0aGhowc+ZMn8fY7XZ8/PHH+PWvfy2bFEzhpWeqhsxBrpM9mYOWNUC7DT5boJmpFRMDoQaFhYU4duyYz2PYF83ctE7BmGWqJtopdbInc1C7sAQAp2jaDg0wZysmBkIVarvXJDk5OVizZg2nRU1KT4FuCj+5TvZkHlovGH/brwNS4z2/U6nxcaZbj+caoQql9jHupGnRhQsXcreoSbFAd+Tw7lbB3djmo/WC8c5uqfife7qZvuoTR4Q+aB0NMofQ/GLsNsy6txsAbVM1zDUMH+9Een6/zEe6sNSyBii1Yhrasy2yOl1ruiAIsMSaT0p1DuWw7FNk0JJHyFzD8FErq3bo0CHs3buXO0lNIBI6v7DWaICBUOkLqWbLli3MITQ5X0WAlbaEm+nLbWVqF5/jx4/H0qVLWdfXJMx+0chAGGAg3Lp1K+644w7V49ybifrqqUbm1+gUuG3uZsXdcNI6YvHTA005vRPp1C4+bTYbYmJi0NDQwB6gJmLmzi9a40FIPkWLFy/GvHnzUFZWhh49emDhwoXIyMiQPXbZsmVYsWIF9u3bBwDo3bs3XnjhBcXjjaK1sgUDn3VEWlkoq1ErqyaEcKVRSGuGHBWGl5mDoB6GB8K3334bU6ZMwZIlS5CZmYkFCxZg8ODBOHz4MJKTk5scv3XrVowYMQJ9+/ZFXFwc5s6di7vuugv79+9H27ZtjT5dF4fDgWHDhoXs9ShwgX4pmWsYXr4uPhsbGzF16lRUVlZyJ6lJmH1aVA/Dp0YzMzNxyy23YNGiRQCu7ABr164dnnzySUybNk318Y2NjfjJT36CRYsWadq4EqypUSEEyztFkGB8KUuOnMOIZdtUjyscdytHhCHGBr3mEilr6aboR3j58mXs2rUL2dnZP76g3Y7s7GyUlJRoeo6LFy+ivr4erVvL53fV1dWhpqbG4xYMLO8UOYLV90zPlnAKHaU0JrZiCo9Ia7GkhaGBsLKyEo2NjUhJSfG4PyUlBWVlZZqe4+mnn0abNm08gqm7vLw8xMfHu27t2rUL+LxZ3ilyBPNLqTfXkEKDDXrNxYp1e02dUP/iiy9i9erVWLt2LeLi5CsZTJ8+HdXV1a7byZMnA35dlneKHMH+Ug7pnobXH+4VEWWhogEb9JqPFdfSDV1lTkxMRExMDMrLyz3uLy8vR2qq735V8+fPx4svvohNmzbhpptuUjzO4XAEddcmyztFFiO+lEO6p+HObqmW2A0X6dig13ysWLfX0L/ssbGx6N27N4qKinDfffcBuPLBLSoq8tnb76WXXsLzzz+PDRs2oE+fPkaeYhPetUXdp1+4KG8+Rn0ppbJQFF5s0Gs+Vqzba/gQZ8qUKRg9ejT69OmDjIwMLFiwALW1tRgzZgwAYNSoUWjbti3y8vIAAHPnzsXMmTOxatUqdOjQwbWWePXVV+Pqq6829Fy9R4MSjgrNy4pfSrpCCIEvvvgCDzzwAHdum4i0lv54wW7YIF9eLdLW0g1fI3zwwQcxf/58zJw5Ez179sTevXuxfv161waaEydO4MyZH3f1vf7667h8+TIeeOABpKWluW7z5883+lS5KB+BuMHFurhz27ystpbOEms/UCvvxKLa5mal5F768ftYWlrKcmomZvbKMqYqsRYJuCgf2bjBxVq8d24XFhaiS5cuLHBhMlZZS+eI8Ad1dXX44IMP/K4tyko0RMHhPTtjt9tx7bXXoqKigpVkTMqsI0N2nwhCP0I9pBJQ/KISBcZXKyZOk5qPmZclGAhDGAi5nkEUHFr6gPJi0zzMXnPUFLVGowUr0RAFh9LObYnNZmMlGZOwUs1RBkIFQgjs3LlTtTu9dwkolnwKr0anQMmRc3h/7ymUHDkXEV9CukKtnBpw5XvJi01zsFLNUQZCBVpzmLyvYJlzGD7r953BbXM3Y8SybZi4ei9GLNuG2+Zu1tx9gsJL2rmtdvHJUaE5WKnmKAOhDK3dJ9gexjyC1YqJwkcqp5afn4/x48crHsdRoTlYqeYoA6EMrWt+rERjDlZaq4hmDocDw4YNw/Dhw7Fhwwafx/JiM/ys1L+TgdCL1jU/tocxDyutVdCVC8xjx475PMa9wAWFh5XKG3KPvxet3SdYicY8rLRWEe3clyWAK+uBiYmJmDdvHmJiYjyOZdeJ8PBOnl/8UC/M+cgzjzDVJHmEWjEQutHTfYLtYczDSmsV0c77QlQIgYqKCsTExDB30ASUkudn3NMVP2npMF1lGa2YUO/GV0UL6ef8MppPo1PgtrmbVVsxFT89MKK+nNFCKk/Ys2dPdO7cuUkyPQvem4PZk+flMKFeJ675RS4rrVVEIylV6cknn+TmM5Oy+oY0BsIfqOUwcXHe3KzWHy1auK8JvvHGG4rH8UI0vKy+IY3zDD9QWvMrLi7G0qVLkZOTg4EDB3LNz8TYiinyuK8J+gpy3HwWXlbfkMZA+AMph8ldQ0MDZs6cCQD4+OOPsXDhQq5RmJze/mhmbR8TDbw3p9lsNiQlJeGll15qskMU4OazcLL6hjT+VfdBLrGem2Wsw8ztY6KB3A7Rs2fPcoeoCUnJ82ob0iIheV4Od40qkGsOyp1r1hGJO+CsRKndEr9n5iV9ZwB4fG+UvjNmmG3hrtEAsZi2dVl9B1wkYHnCyKNnQ1qkFcDniFAGr1atreTIOYxYtk31uMJxt+pabyRt1Jrv8ntmbo1OgW1Hz6HkyDkAAlkdE3Frp2tdoz0zzbZwRBgAXq1am9V3wJkdU5Ui28YDZfjjO/+HRVu+waItRzDyje2u0V6kzrbwcsuLUpk1iVy5NYosVt8BZ3YsTxi5lEZ7UruzSdk3aM43NNNsC/+Se2Exbeuz+g44s5NLVSLz0zLaW/avI5qey2yzLQyEXryvVt0T6vv16weAV6uRTirJ9njBbtggvwPOvSSbGXa/0Y+k2qR9+vRRLIlIwadWXQYAvqtr1PRcZptt4WYZH6RF/dLSUnTs2JGL9xajJY+QuYbms2LFCowePRorVqzAI488Eu7TiRrv7z2Fiav3BvQcoS6ArzUeMBD64N2Ngt0nrMfXaE9pPUTy/x66GXff1CZ0J0toaGhAWloaKisrkZSUhNOnT/PiNES07rZWwl2jEUhLp3ohBHbu3Km4+43MTyrJNrRnW2S5bQH3tR4iyS3cg3VfmDMvyqoKCgpQWVkJAKioqMDKlSvDfEbRQ1pb93ccZ+YC+AyECrQk1EvtY/hltB4t6yFOATyxardpk4StpqGhAVOnTvW4b+rUqexIESLu7c60yr3jOrw6vCcKx92K4qcHmjIIAgyEspR6E7qPCt3bx7A9jPXo2dVmxrwoK3IfDUo4KgytId3T8Njt6ZqP73ddYpPZFjNiIJShJaFeriA3WYeeXW2R3IctUsiNBiUcFYZOo1Pgg/9TnwGx4cqmskhJQWIg9KKlU/3MmTMxc+ZMn+uHFFkanQIlR87h/b2nUHLkHHq3/wnS4rUHQ7PlRVmN3GhQwlFh6GhZMgCupCS5pyCZXUgC4eLFi9GhQwfExcUhMzMTO3bs8Hn8O++8gy5duiAuLg433ngj1q1bF4rTBKCt/FNpaalHnUSWXotscgWC+8/bgl/10L6eYba8KCvxNRqUcFQYGlov+H7br4Np1wPlGL7v+O2338aUKVOwZMkSZGZmYsGCBRg8eDAOHz6M5OTkJsf/+9//xogRI5CXl4df/vKXWLVqFe677z7s3r0b3bt3N/p0Vcs/NTY24qmnnsLZs2c97mfptcjkq2TUXz8txbifp+ON4lIoLQGyCo3xPvnkE8XRoKSiogKffPIJBg0aFKKzik5aL/ju7JZq8JkEl+F5hJmZmbjllluwaNEiAFdGT+3atcOTTz6JadOmNTn+wQcfRG1tLT788EPXfbfeeit69uyJJUuWqL5eMPMI5XjnFsr9nLmGkaHRKXDb3M0+p3rS4uPwP7/oitzVexSPmZx9A3IHXhcx00CR5uOPP8bgwYNVj9uwYQPuuuuuEJxR9JK+M2rlCUOVMK9GazwwdOhy+fJl7Nq1C9OnT3fdZ7fbkZ2djZKSEtnHlJSUYMqUKR73DR48GO+9957s8XV1dR6jt5qamsBPXAELcluLlvWOM9WXcO01Dix5uFeTCjOSVzZ9hdU7T7DajEH69++vqUh3//79Q3hW1qGnhKDe8oSRwtC/1pWVlWhsbERKSorH/SkpKTh06JDsY8rKymSPLysrkz0+Ly8Ps2fPDs4JK5BqG3733XcsyG0hZTXa1jvKai7h1ze3xZ3dUrFo89d4ZdPXTY/5ofq+WROGIxmLdBvHnxKCUoNe78elRnDpwYgftkyfPt1jBFlTU4N27doF9TUKCgowatQovPnmm2wfYyFV3yn/HpWOW73zpOwxAleuiGf/4wDu7JYacVfEFH3UWir5uqgb0j0Nd3ZLtUwxekMDYWJiImJiYlBeXu5xf3l5OVJT5RdTU1NTdR3vcDjgcDiCc8Iy3BPnn3vuORbetpDWLWN1Hac2lWrWXmtE3tRaKmm5qJPKE1qBoekTsbGx6N27N4qKilz3OZ1OFBUVKY6asrKyPI4HgI0bN4ZtlMXEeetKjb9K13HsbE9WoeeiLhoYnkc4ZcoULFu2DP/7v/+LgwcP4vHHH0dtbS3GjBkDABg1apTHZpqJEydi/fr1+Mtf/oJDhw7h2Wefxeeff47c3FyjT7UJLYW3KXJJRYR9ubZlLHq3/wkAdrYn6wj0os67AEWklxg0fI7vwQcfREVFBWbOnImysjL07NkT69evd22IOXHiBOz2H+Nx3759sWrVKvzpT3/CM888g+uvvx7vvfdeSHIIvbmPBgHPxHmmSEQ+9x1wSl/jc7WX0X/eFsy6txvu7JbKzvZkCYFc1FmxRyf7ESqQmvK6V5ABrowKO3TowLVCC5H7Yrtz76MGAI8X7AYgv3Wcu0YpEvibD6i0wcasn3/2IwyQlsLbZA1Duqfhk6l3oHXL5rI/lz4B0uaB1x/uhVSvKVUz91oj8ubeUsl7K4xSPqDaBhsgcjuxcEQoQ2k0KOGo0Hq0dt8uHHcrsjpdqysJmcis9Exz6v2OmIEpKstEKqnwthImzluP3s0DSlvHGSApkujJB7TyrmkGQhlqhbcBJs5bTTB2hFpxEwFZn9Z8QCvvmmYglMGSTtFHSqXwd0doIFU6iCJBoN8RM+NmGbI8LTlP/mwecH9+q24ioMhkRJ5fIN8Rs+OIkCxNz3Slv8WEWXqNzMTIKXorFtwGGAjJwvyZrvSnmLCVNxFQZDFyil7aCFbX4MT8YT0AAVTW1lliUxgDIVlSIEWF9RYTtvImAoocwSikrcTXKNMKsxxcIyRLCmVRYWkTgdKfFhuu/NGIxE0EFDmM+sxLo0zv55ZGmev3nfHndE2FgZAsKZTTlVbeRECRw4jPfLRsBGMgJEsK9XSltImApdcoXIz4zEdLuyauEZIlhSPnyWpduymyGPGZj5aNYBwRkiUFa7pSbz6WtNFmaM+2yOp0LYMghYwRU/TRshGMI0KyrEBznlgyjSJNsPP8rFxNxh27T5Dl+VMIO9L6rhG5C2bxd+m7AEReD06t8YCBkMiL1LTUV6NeuaalRFYVqbMjbMNE5Cd/S6axBRNZldU3gjEQEnnxZ6dcpF4xE2mlt+JSJOGuUSIvenfKaam8YUQ3ACIKDo4Iibzo2Smnpb7j9He/xLMf7EdZzY+NnjlaJDIPjgiJvOjJx9KynvjtxXqPIAhYq04jUaRjICSSobVkmr8VNaxUp5Gig5Wn9zk1SqRAy065QCpqsGEvRQqrbwZjICTyQW2nnNp6ohaRXqeRrM3IZr9mwalRogD4Wk/UKtLrNFJk8GdqM1raMHFESBQgpfqOafFx+L6+EdUX6y1dp5HMT25qM+Gq5hjTrwNyB16vmBjvb3GJSMNASBQESuuJGw+U4fGC3bBBvk4jG/aS0ZSmNs9/X49XNn2Nt/59DC/+5kbZ6U22YSIiXeRaMLFhL4WTr6lNyfmL9YqpPGzDRERBYfU6jRQ+avVt1aY2JQJX1vru7Jbq8fhoacPEQEgUAlau00jhoSWlQc+Updxan7QZzOrT+5waJTKAlZOPKfy01LcF9E9ZygXOaJjeN3REWFVVhSeffBL/+Mc/YLfbcf/99+PVV1/F1VdfrXj8rFmz8PHHH+PEiRNISkrCfffdhzlz5iA+Pt7IUyUKGqsnH1N4aalvK01zSlObWqZHAeXAafXpfUNHhCNHjsT+/fuxceNGfPjhh/j000/x2GOPKR5/+vRpnD59GvPnz8e+ffuwfPlyrF+/HmPHjjXyNImCRuuVOpG/9KQ0uOe5+mLDlYs1X2t9cpvBrMKwDvUHDx5Et27dsHPnTvTp0wcAsH79etx99934z3/+gzZt2mh6nnfeeQcPP/wwamtr0ayZ+gCWHeopXNjZnkLh/b2nMHH1XtXjXh3eE0N7tgVw5QJt2rtf4vzF+ibHSZ9Eq0xzutMaDwwbEZaUlCAhIcEVBAEgOzsbdrsd27dv1/w80htQCoJ1dXWoqanxuBGFg54rdSJ/+ZPSMKR7Gnb96U5Mzr4BCVc19zjOSmt9/jJsjbCsrAzJycmeL9asGVq3bo2ysjJNz1FZWYk5c+b4nE7Ny8vD7NmzAzpXomCIluRjCi9/Uxpi7DZMzL4euQOvs+xan790jwinTZsGm83m83bo0KGAT6ympgb33HMPunXrhmeffVbxuOnTp6O6utp1O3nyZMCvTeQPf67UubuU9NLTL1Pp8VZd6/OX7hHhH/7wBzz66KM+j+nYsSNSU1Nx9uxZj/sbGhpQVVWF1NRUn4+/cOEChgwZgmuuuQZr165F8+bNFY91OBxwOByaz5/IKHqv1Lm7lPylVN82lZ8fvxi+Webzzz9H7969AQAff/wxhgwZ4nOzTE1NDQYPHgyHw4F169ahRYsWul6Xm2UonKRdo4B88rG0FqNU/9HKGxco+NQqy2g9xqq0xgPDAiEA/OIXv0B5eTmWLFmC+vp6jBkzBn369MGqVasAAKdOncKgQYOwYsUKZGRkoKamBnfddRcuXryItWvXomXLlq7nSkpKQkxMjOprMhBSuKlV+gfA3aUUEtE+62CKQFhVVYXc3FyPhPrXXnvNlVB/7NgxpKenY8uWLRgwYAC2bt2KO+64Q/a5SktL0aFDB9XXZCAkM2h0Ciza/A3e+qwU57//cct6Wnwcht/SDq9s+lr1OQrH3cqybOQ3X7MOAsDk7OvRIbGlpUeJpgiE4cBASGag9kdIC/c8MCI91HJavVl1lBj2PEKiaKWlq7cWkd7ahsJHa9cJSbRXPmIgJAoyvX+EvGkpd0Xki95cVekCbfY/DkRlCg8DIVGQ6fkj5E8eGJEaf2YTornyEQMhUZBp/SM0OfuGJq1tWreMxeKHmDpBP/Kn6IKU0+rPpVQ0Vj5iY16iINOaWJ878Dpcn9wSf3p/H6pqr+wsPVd7GXM+OgC7HQyG5Hf6g6+GumqicW2aI0KiIJGu3D/84jSG39LO1RvOnfvU58YDZZiwao8rCEqifeMCXRFoSy+lhrpKonltmiNCoiCQTaJvcaU0oHvrG6kE1p3dUnHb3M2amqtyrTD66Gm+6+vz4d1Q91jlRSzY9JXreSTRvjbNQEgUIKWcweofAuDk7BvQIbGFR+JyyZFzmls2Mak++uhp6aX2+ZCKbAP4YX1R4K3PjnkUeoj2GqUMhEQB0HLlvnrniSbl0tiyiXwx4vOhXPovHbkDr4vKkaCEgZAoAP5eufvTsomiR7A/H4qzFt/Xu6ZKvWctogkDIVEA/L1y/7b2Muw2QGknvFJzVYoO/jbflaOl0tErPwRDwLrl1nzhrlGiAPhz5b5+3xlMWLVbMQhKonXjAgXefNcdy62pYyAkCoBa4rL3lnRfV+cSuw1Y/NDNUXVFTk0ppT+kxsfp6lfJcmvqODVKFABfictyV+5ars6dAvhJS4ch50uRxTv9wZ81vEDLrUXDrmUGQqIASVfu3jvy5Lakc7co+aLUTT6QYKS23uhLtHwOGQiJgkDrlTt3i5ISo7rJs9yaOq4REgWJdOU+tGdbZHW6Vnb6Su+aIkWHQMupqWG5Nd84IiQKIb1rimR9wSqnpqZpubVavLLpa34OwREhUcgFazcgWYOeogyBcp+1mJh9A5bwcwiAI0KisAjGbkCyhnBuoOLn8AoGQqIwCXQ3IFlDuDdQ8XPIqVEiorDiBqrwYyAkilBSI+D3955CyZFzUVMFxGqCWU6N/MOpUaIIpJZzppSYTeakpygDBZ9NCGGpy8iamhrEx8ejuroarVq1CvfpEGmiJ3AptdSRjn7s9nR88H9nPP6gtm7ZHM8N7Y67b2pjzBugoOAFTHBpjQcMhERhpqeiSKNT4La5m3V1E3A3/vZ0TL+7W0DnSxQptMYDrhEShZHeiiJ6W+p4W/ppKdZ9ET3tdYi0YCAkChMtDVO9W+EEI5dsxvv7uLHGJLjhyRy4WYYoTPRUFJHyvIKRS3au9nLUtNcJFy1rfUYV2Sb9GAiJwsSfiiIZ6a2R0KI5zl+sD/prc6NGcGgJcEobnqQpcaUSZ/wdGYOBkChMwllRxPs5OTrxn3twOlZ5EQs2feUzwN3ZLdWvIttyv6PWLWN/2A3M31EgGAiJwkStYaoNV/LI3CuK7CitCng06F2lxN/RCckHJznuAe4aR3PdU+JKv6Oq2st4YtVujP8PdwMHwtDNMlVVVRg5ciRatWqFhIQEjB07Ft99952mxwoh8Itf/AI2mw3vvfeekadJFBb+VBQJdLOMzes5/dmwQ1co7fhVIgW4kqOVmo6Xfte+fkeSK7uBT2t6XmrK0EA4cuRI7N+/Hxs3bsSHH36ITz/9FI899pimxy5YsAA2G+e+ydr0tmTSOk06adD1aN0y1uO+NJnnDGULICvREpyUafu7Jv2utabM/Im7gf1m2NTowYMHsX79euzcuRN9+vQBACxcuBB333035s+fjzZtlCtc7N27F3/5y1/w+eefIy2NUzJkbXpa4WidTn1y0PV4ctD1qs+58UCZpnM0ogVQJAsknzOr07Uo2H7c5xR3Qovmrulrrf/3VbX13A3sJ8MCYUlJCRISElxBEACys7Nht9uxfft2/PrXv5Z93MWLF/HQQw9h8eLFSE1NVX2duro61NXVuf5dU1MT+MkThZjWVjgxdhtm3NMNT6za3eRnctOpvp6z0Snw3l5t02lGtQCKVP5cGEgXKbd0UO8i4X65ouf/nhcs/jFsarSsrAzJycke9zVr1gytW7dGWZnyVejkyZPRt29fDB06VNPr5OXlIT4+3nVr165dQOdNZGbr953BnI8OyP5Mb2fxHaVVqKq9rHrcT9xGJ0aLlARzvRcG7hcpu45/q7rh6duL9a7p6Iz01k2muYN1XnSF7kA4bdo02Gw2n7dDhw75dTIffPABNm/ejAULFmh+zPTp01FdXe26nTx50q/XJjI7tc0ZM+7pqmt3p9bRQ12DU/MUaiDW7zuD2+Zuxohl2zBx9V6MWLYNt83d3KTMXLD5E3zVegh6c79I0Zs/GmO34bmh3VWPZ89C/+meGv3DH/6ARx991OcxHTt2RGpqKs6ePetxf0NDA6qqqhSnPDdv3owjR44gISHB4/77778fP//5z7F169Ymj3E4HHA4HHreAlHEUducYQMw56ODGNw9TXOCtdbRw8XLjYanUYQ6hUPK/dt0oAxr955CVe2PIzQt+ZPSjt/HC3bDBnict/TvydnXo0Niyybrs/7kj959UxrG/ycdSz8tlT3Wezcw6WNY94mDBw+iW7du+Pzzz9G7d28AwMcff4whQ4bgP//5j+xmmbKyMlRWem4tvvHGG/Hqq6/i3nvvRXp6uurrsvsEWVHJkXMYsWyb6nGF427VvFnicoMTt+Zt8ggCSqT1reKnBwb9j61aR41gv7Za7p/0ClqCrz+FCKT3q7bhSe79rvviNP70/j7dgTtaaY0Hhm2W6dq1K4YMGYJx48ZhyZIlqK+vR25uLoYPH+4KgqdOncKgQYOwYsUKZGRkIDU1VXa0+NOf/lRTECSyKn/Ksfki/QHXEgSBH9Moth05B7vdFtQSX/7UXFWiVoJMaeTp/XpK1V286dnxK1EbTQLKo7u7b2qDwd3TWGYtyAytLLNy5Urk5uZi0KBBsNvtuP/++/Haa6+5fl5fX4/Dhw/j4sWLRp4GUcQLZjk2LcFAyYRVu3H+++CORoIV5NVGZ3py//QEX607ft0F0pHen9cj3wwNhK1bt8aqVasUf96hQweozcxarG8wkV/8KccmJ7BEcHgEQUB5DU9PcehgBHkta4zxV8Xqzv0zMh3BfTRZVv09qmovo/XVDsRfFYtGp+AoL4RYa5QoAgQyneYu0Ma+3uSmEfWumwUa5NXKxEnn99SQLrrfn5YgHUhHiBi7DdXfX8ZLGw6z4HkYsTEvUYTQW45NjhEjHPdpRKUUD2lkJpcK4U/NVXda1xirvqtTPMabDdrSEQJN+fDn/4uCjyNCogjiz+YMd/4kXCdc1bzJlKicsppLeGn9Id3thYDA1sy0BvfWLWN9jjy9qY2wA0350DqSVduwQ4FjICSKMIFsltA6DTn/gR6orK1D8jVxcAqBkX/brvrcVd/VBbT7098grzW4p8ZfpViezp2W9IdtR85h2v/3ZUBBLJi7ZSkwDIREUUTrWmO/6xNd9zc6habgqbUM2GffVCoGOH+CvNbg/m1tHeZ8dFD2Oa5tGYuhPdvgzm6psufmKwFfjpYgFuyUGPIf1wiJoozetUata3ip8Vdpev1FW74Jauk0Lef3qx5pmLBqj+IIbM7Qn2HmvT9DVqdrmwRB93XANz47pjn3EvAdxIKZEkOB4YiQKArpnYbUsoanNnJ0F+zSab7Ob8Y93TDnI//K0wWScwn4DmLBSomhwBlWYi1cWGKNyDhaK7cAUA0eRpRtkzu/HaVVfpWnUyv95ovW96b0/6WnzBspC3uJNSKyhkanwLaj51By5BwAgayOifjlTW1k/8ArjczkBLoZRCkoez+Xv2tx/uZc6snrDGS3LAUPAyERKVq/7wymvfulR/+8RVuOIKFFc7z4mxtl/1BL066vbDyMRVuOqL6GP5tB9CTt+7sW5+8mFb1BLNCUGAocN8sQkaz1+84gp2C3bBPZ8xfrkeOW8O3d0w8A+l2XpOl19G4G0ZuErtY7UCl5Xu95JVzVHCt/l4nipwfqHslJI9mhPdvKbtghY3FESERNNDoFnv3ggOpxz36wH04nMOejpqOzGfd0RWqrOJTV+G6vpGcziD9J6P6Wp1PbzOLtxftvRL/rEtUPJNPhiJCImthRWqUYwNyV1dThiVXyo7MnVu1BzSX5VAM962je56U1Cd2dP+XpfKVleEto0VzT+ZM5cURIRE0EmsQtjaAuXm6U/XlCi+Z4tG866hqcKDlyTvOaWCBJ6P6sxWnd/FN9sT6o6SAUWgyERNSE0Unc5y/W45VNX7n+rbXbgj8bX9RSPtR+LgXQbUfPYcLK3bJ1V1kbNLIxEBJRExnprX2u7wVKS6FquQClNwldbXep1t2nMXYb7Dabz+LjrA0auRgIiaiJGLsNz/6qG3IKfBeoDhbvEdXGA2WKAUrrxhe17hCP3Z6Ov35aqrl7BGuDWhc3yxCRrCHd07Dk4V6yG0ESWjTH/3voZp9pCXpJI6pFm7/xmR4BQHXji9ruUgBY9q+mQdD957P/cQCNzh+PYG1Q6+KIkIgUua+PuVeWufWHXDe73SY7OgvEW58pByhp1Fj89ECfG1+07C71VVxSbpqTtUGti4GQiHyKsdvQ77pE2Rw5pV2VP2nRHN9erPcrQOpZhwu0xZEa9+fxNx+RzI+BkIgCopSWILfOZ7cBToXIaAMQf1Vzn4FQohbogjU96f08rA1qTQyERBQwuWLXcgHy29rLmLBKudvCmH4d8Mqmr1VfTy3QaZnGtKkEZaVpTtYGtR5uliEiw3jX0Lz7Jt8VXnIHXu9XXVC511Vr1jvu5+lXAqLCz31Nc7I2qLWwHyERhZyvJPZg9ugLVh4hRSat8YCBkIhMJ5gBKtDKMhS5GAgZCIkiGgMUBYod6okoosltwCEyAjfLEBFRVOOIkIhMiVOjFCoMhERkOtzNSaHEqVEiMhUpfUKp6Pb6fWfCdGZkVQyERGQaWrpGeHeFIAqUYYGwqqoKI0eORKtWrZCQkICxY8fiu+++U31cSUkJBg4ciJYtW6JVq1a4/fbb8f333xt1mkRkIlq6RkhFt4mCxbBAOHLkSOzfvx8bN27Ehx9+iE8//RSPPfaYz8eUlJRgyJAhuOuuu7Bjxw7s3LkTubm5sNs5cCWKBmx+S+FgyGaZgwcPYv369di5cyf69OkDAFi4cCHuvvtuzJ8/H23atJF93OTJk/H73/8e06ZNc93XuXNnn69VV1eHuro6179ramqC8A6IKBzY/JbCwZChVklJCRISElxBEACys7Nht9uxfft22cecPXsW27dvR3JyMvr27YuUlBT0798fxcXFPl8rLy8P8fHxrlu7du2C+l6IKHSkrhGBFt0m0sOQQFhWVobk5GSP+5o1a4bWrVujrKxM9jFHjx4FADz77LMYN24c1q9fj169emHQoEH4+mvltizTp09HdXW163by5MngvREiCiktXSPY/JaCTVcgnDZtGmw2m8/boUOH/DoRp9MJABg/fjzGjBmDm2++Ga+88go6d+6MN998U/FxDocDrVq18rgRUeSSmt8qtWpiHiEFm641wj/84Q949NFHfR7TsWNHpKam4uzZsx73NzQ0oKqqCqmpqbKPS0u78uHu1q2bx/1du3bFiRMn9JwmEUU4Nr+lUNIVCJOSkpCUlKR6XFZWFs6fP49du3ahd+/eAIDNmzfD6XQiMzNT9jEdOnRAmzZtcPjwYY/7v/rqK/ziF7/Qc5pEZAEsuk2hYsgaYdeuXTFkyBCMGzcOO3bswGeffYbc3FwMHz7ctWP01KlT6NKlC3bs2AEAsNlsmDp1Kl577TX8/e9/xzfffIMZM2bg0KFDGDt2rBGnSUREZFyt0ZUrVyI3NxeDBg2C3W7H/fffj9dee8318/r6ehw+fBgXL1503Tdp0iRcunQJkydPRlVVFXr06IGNGzeiU6dORp0mERFFOTbmJSIiS9IaD1iyhYiIohoDIRERRTUGQiIiimoMhEREFNUYCImIKKoxEBIRUVQzLI8wXKRsELZjIiKKblIcUMsStFwgvHDhAgCwHRMREQG4Ehfi4+MVf265hHqn04nTp0/jmmuugc0WeIHempoatGvXDidPnrRsgr7V36PV3x9g/fdo9fcH8D0aQQiBCxcuoE2bNrDblVcCLTcitNvt+K//+q+gP280tHiy+nu0+vsDrP8erf7+AL7HYPM1EpRwswwREUU1BkIiIopqDIQqHA4HZs2aBYfDEe5TMYzV36PV3x9g/fdo9fcH8D2Gk+U2yxAREenBESEREUU1BkIiIopqDIRERBTVGAiJiCiqMRASEVFUYyCU8fzzz6Nv375o0aIFEhISND1GCIGZM2ciLS0NV111FbKzs/H1118be6J+qqqqwsiRI9GqVSskJCRg7Nix+O6773w+ZsCAAbDZbB63nJycEJ2xusWLF6NDhw6Ii4tDZmYmduzY4fP4d955B126dEFcXBxuvPFGrFu3LkRn6j8973H58uVNfl9xcXEhPFt9Pv30U9x7771o06YNbDYb3nvvPdXHbN26Fb169YLD4cB1112H5cuXG36egdD7Hrdu3drkd2iz2VBWVhaaE9YpLy8Pt9xyC6655hokJyfjvvvuw+HDh1UfZ4bvIgOhjMuXL2PYsGF4/PHHNT/mpZdewmuvvYYlS5Zg+/btaNmyJQYPHoxLly4ZeKb+GTlyJPbv34+NGzfiww8/xKefforHHntM9XHjxo3DmTNnXLeXXnopBGer7u2338aUKVMwa9Ys7N69Gz169MDgwYNx9uxZ2eP//e9/Y8SIERg7diz27NmD++67D/fddx/27dsX4jPXTu97BK6UsXL/fR0/fjyEZ6xPbW0tevTogcWLF2s6vrS0FPfccw/uuOMO7N27F5MmTcLvfvc7bNiwweAz9Z/e9yg5fPiwx+8xOTnZoDMMzCeffIIJEyZg27Zt2LhxI+rr63HXXXehtrZW8TGm+S4KUvTWW2+J+Ph41eOcTqdITU0V8+bNc913/vx54XA4RGFhoYFnqN+BAwcEALFz507Xff/85z+FzWYTp06dUnxc//79xcSJE0NwhvplZGSICRMmuP7d2Ngo2rRpI/Ly8mSP/+///m9xzz33eNyXmZkpxo8fb+h5BkLve9T62TUjAGLt2rU+j3nqqafEz372M4/7HnzwQTF48GADzyx4tLzHLVu2CADi22+/Dck5BdvZs2cFAPHJJ58oHmOW7yJHhEFQWlqKsrIyZGdnu+6Lj49HZmYmSkpKwnhmTZWUlCAhIQF9+vRx3ZednQ273Y7t27f7fOzKlSuRmJiI7t27Y/r06bh48aLRp6vq8uXL2LVrl8f/vd1uR3Z2tuL/fUlJicfxADB48GDT/a4k/rxHAPjuu+/Qvn17tGvXDkOHDsX+/ftDcbohEWm/w0D07NkTaWlpuPPOO/HZZ5+F+3Q0q66uBgC0bt1a8Riz/B4t130iHKQ5+5SUFI/7U1JSTDefX1ZW1mRqpVmzZmjdurXPc33ooYfQvn17tGnTBl988QWefvppHD58GO+++67Rp+xTZWUlGhsbZf/vDx06JPuYsrKyiPhdSfx5j507d8abb76Jm266CdXV1Zg/fz769u2L/fv3G9KdJdSUfoc1NTX4/vvvcdVVV4XpzIInLS0NS5YsQZ8+fVBXV4e//e1vGDBgALZv345evXqF+/R8cjqdmDRpEvr164fu3bsrHmeW72LUBMJp06Zh7ty5Po85ePAgunTpEqIzCi6t789f7muIN954I9LS0jBo0CAcOXIEnTp18vt5yRhZWVnIyspy/btv377o2rUrli5dijlz5oTxzEirzp07o3Pnzq5/9+3bF0eOHMErr7yC/Pz8MJ6ZugkTJmDfvn0oLi4O96loEjWB8A9/+AMeffRRn8d07NjRr+dOTU0FAJSXlyMtLc11f3l5OXr27OnXc+ql9f2lpqY22WDR0NCAqqoq1/vQIjMzEwDwzTffhDUQJiYmIiYmBuXl5R73l5eXK76f1NRUXceHmz/v0Vvz5s1x880345tvvjHiFENO6XfYqlUrS4wGlWRkZJg+uOTm5ro24anNPpjluxg1a4RJSUno0qWLz1tsbKxfz52eno7U1FQUFRW57qupqcH27ds9rsqNpPX9ZWVl4fz589i1a5frsZs3b4bT6XQFNy327t0LAB6BPxxiY2PRu3dvj/97p9OJoqIixf/7rKwsj+MBYOPGjSH7Xenlz3v01tjYiC+//DLsv69gibTfYbDs3bvXtL9DIQRyc3Oxdu1abN68Genp6aqPMc3vMaRbcyLE8ePHxZ49e8Ts2bPF1VdfLfbs2SP27NkjLly44Dqmc+fO4t1333X9+8UXXxQJCQni/fffF1988YUYOnSoSE9PF99//3043oJPQ4YMETfffLPYvn27KC4uFtdff70YMWKE6+f/+c9/ROfOncX27duFEEJ888034s9//rP4/PPPRWlpqXj//fdFx44dxe233x6ut+Bh9erVwuFwiOXLl4sDBw6Ixx57TCQkJIiysjIhhBCPPPKImDZtmuv4zz77TDRr1kzMnz9fHDx4UMyaNUs0b95cfPnll+F6C6r0vsfZs2eLDRs2iCNHjohdu3aJ4cOHi7i4OLF///5wvQWfLly44PqeARAvv/yy2LNnjzh+/LgQQohp06aJRx55xHX80aNHRYsWLcTUqVPFwYMHxeLFi0VMTIxYv359uN6CKr3v8ZVXXhHvvfee+Prrr8WXX34pJk6cKOx2u9i0aVO43oJPjz/+uIiPjxdbt24VZ86ccd0uXrzoOsas30UGQhmjR48WAJrctmzZ4joGgHjrrbdc/3Y6nWLGjBkiJSVFOBwOMWjQIHH48OHQn7wG586dEyNGjBBXX321aNWqlRgzZoxHkC8tLfV4vydOnBC33367aN26tXA4HOK6664TU6dOFdXV1WF6B00tXLhQ/PSnPxWxsbEiIyNDbNu2zfWz/v37i9GjR3scv2bNGnHDDTeI2NhY8bOf/Ux89NFHIT5j/fS8x0mTJrmOTUlJEXfffbfYvXt3GM5aGylVwPsmvafRo0eL/v37N3lMz549RWxsrOjYsaPH99GM9L7HuXPnik6dOom4uDjRunVrMWDAALF58+bwnLwGcu/N+++kWb+L7EdIRERRLWrWCImIiOQwEBIRUVRjICQioqjGQEhERFGNgZCIiKIaAyEREUU1BkIiIopqDIRERBTVGAiJiCiqMRASEVFUYyAkIqKo9v8DPNDFYWeHxPAAAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 28
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-08-14T07:08:44.412531Z",
     "start_time": "2025-08-14T07:08:25.045505Z"
    }
   },
   "cell_type": "code",
   "source": [
    "batch_size = 20\n",
    "max_steps = 40000\n",
    "learning_rate = 0.1\n",
    "\n",
    "x, y = torch.tensor(data[0]).float(), torch.tensor(data[1])  # 第二个不用加 .float() 因为交叉熵要求第二个参数是整数\n",
    "model = Sequential([\n",
    "    Linear(2, 4), Sigmoid(),  # (B, 4)\n",
    "    Linear(4, 4), Sigmoid(),  # (B, 4)\n",
    "    Linear(4, 2)\n",
    "])\n",
    "\n",
    "lossi = []\n",
    "\n",
    "for t in range(max_steps):\n",
    "    ix = (t * batch_size) % len(x)\n",
    "    xx = x[ix: ix + batch_size]\n",
    "    yy = y[ix: ix + batch_size]\n",
    "\n",
    "    logits = model(xx)\n",
    "    loss = F.cross_entropy(logits, yy)  # 交叉熵损失\n",
    "    loss.backward()\n",
    "\n",
    "    with torch.no_grad():\n",
    "        for p in model.parameters():\n",
    "            p -= learning_rate * p.grad\n",
    "            p.grad = None\n",
    "\n",
    "    lossi.append(loss.item())"
   ],
   "id": "e13b58ce6b872e01",
   "outputs": [],
   "execution_count": 38
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-08-14T07:09:09.222326Z",
     "start_time": "2025-08-14T07:09:09.091126Z"
    }
   },
   "cell_type": "code",
   "source": [
    "ax = draw_data(data)\n",
    "draw_model(ax, model)"
   ],
   "id": "28c7f447129fd58e",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAAGsCAYAAABO5qdvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWlNJREFUeJzt3Xt8FPW5P/DPbkKCXJI0AkmgqSDIrSiXxKRBjVSigB4Lp3oKSBVBoXpMDxqPFXoERaqRikhVjjmlBepPURSKgGgsgqlAc0EuLRCIAUEQSZREEhI0Cbvz+yPOuruZ2ZnZ3dmdy+f9euWPbGZ3Z7M7+3xvz/N1CIIggIiIyKac0T4BIiKiaGIgJCIiW2MgJCIiW2MgJCIiW2MgJCIiW2MgJCIiW2MgJCIiW4uN9gmEm9vtxhdffIHu3bvD4XBE+3SIiChKBEHA+fPn0bt3bzid8v0+ywXCL774Aunp6dE+DSIiMohTp07hhz/8oezfLRcIu3fvDgDYsmULunbtGuWzISIirUaOHBmWx2lsbER6eronLsixXCAUh0O7du2Kbt26RflsiIhIq4SEhLA+ntI0GRfLEBGRrTEQEhGRYWRkZET8ORkIiYjI1hgIiYjIEKLRGwQYCImIyOYYCImIyNYYCImIKOqiNSwKMBASEZHNMRASEVFURbM3CDAQEhGRzTEQki0JgoATJ05AEARdjicidaLdGwQYCMmmysvLUVhYiIqKCgDKgc7/eCKyDgZCshQ1PTeXy4VNmzYBADZt2gSXyxUw0EkdT0TWwUBIlqKm57Z7927U1dUBAM6ePYuKioqAgc7/+I8//linsyeyFyMMiwIMhGQhanpu3scA7duzrFu3TjbQSR0v9djhmEPkPCRRdDAQkmWo6bl5HwO0B5+mpibP7/6BTup4qccOxxwi5yHJTozSGwQYCMki1PTc/I+R4h3o5I73f+xwzCFyHpIoehgIbcaqw29qem7+x8gRA115ebnk8f6PHY45RM5Dkp0YqTcIMBDaTrSG3/QMwGp6bmp6gyIx0K1fv172GPGx29raVM0hajn/YB6DiILHQGgj0Rx+0zMAy/X0vHtuR48eVdUb9OY9dyj32O+8846qOUQt5x/MYxBR8GKjfQIUOVLDb9nZ2bo/r38AzszMRExMTNgfW4rYu1qwYAFmz56NixcvAgDOnDmD9957T/HxJ0yYgLS0NMm/OZ1ObNiwQfY51bxOpd5sOP9XREZgtGFRQOdA+NFHH+HZZ5/Fnj17cObMGWzYsAGTJk0KeJ+SkhIUFBTg0KFDSE9Px2OPPYa7775bz9O0Bbnht0h80SoFYEEQ8Nlnn+Gyyy6Dw+HQ9NhKPT2xd3XixAmfC/DixYtIT0/3BEYpsbGxGD58OGJjpS+TsrIyxZ6oUkNDTW82Eo0VIjvTNRA2Nzdj+PDhmDlzJn7+858rHn/8+HHccsstuO+++/Daa69h27ZtuPfee5GWloZx48bpeaqWF2j4Tc8vWjUBuLy8HKtWrcLMmTM1n0v//v19enpSYmNj0b9/fwC+QTeUlqnanmighkY4HoPITIzYGwR0DoQTJkzAhAkTVB9fVFSEfv364bnnngMADBkyBDt37sTzzz/PQBiCaA6/KQXgUIdNY2NjNV1coQRdb2p7okePHsWgQYN0ewwiCp2h5ghLS0uRl5fnc9u4cePw4IMPyt6npaUFLS0tnt8bGxv1Oj3Titbwm5oAHMl5y3DOVWrtier1GEQUOkMFwpqaGqSkpPjclpKSgsbGRnzzzTe45JJLOtynsLAQCxcujNQpmk40h9+UAnBFRQU2b94ckXPxPx+1QVdu/lJrT1RKOB6DyCyM/Fk3ffrEvHnz0NDQ4Pk5depUtE/JULQMv4WTmgDsXePT+1z0SBsINlePZc+IrM9QPcLU1FTU1tb63FZbW4uEhATJ3iAAxMfHIz4+PhKnZ0rRGn5TE4Cl8vT06hUGs1hIz7QPIjsxcm8QMFggzMnJwbvvvutz29atW5GTkxOlMzK/aA2/KQXg6upq7Nixo8PtesxbBrtYKFp5l0QUWboGwqamJp8ht+PHj2P//v1ITk7Gj370I8ybNw+nT5/GK6+8AgC477778NJLL+E3v/kNZs6cie3bt+PNN9/Eli1b9DxN0kGgAOxyubBx40bZ+wYKUMHkHAazWCiaeZdEVmL03iCg8xzhxx9/jJEjR2LkyJEAgIKCAowcORILFiwA0F7d4+TJk57j+/Xrhy1btmDr1q0YPnw4nnvuOfzpT39i6oRFiPVGQ5m31Dpnp3axUKDNeL3PiWXPiKxH1x7hmDFjAhZZXr16teR99u3bp+NZUbSIOXzTp0/H7NmzcfjwYezYsQO5ubkYMGCAz7FS85bBzNkFk6vHsmdE9mKoOUKyLu/gsmXLFjzxxBOe3R0qKysxZcoUxeASzJydOFfZ2tqKdevW+SzQ6datG26//XbExcX5BF2WPSMKDzMMiwIWSJ8gc/APYmvXrtW0/56a9AeprZ7EuUqHw9FhlWpTUxOcTicyMjI89USDHUoNdpspvbansuq+k0R6YCAk3UkFsV27dvn8rpTTp2bOTm7+UO1O80DweZfB5hvqlafI/EeKNrP0BgEOjVIESAUx756K0pCjmjk7ALLzh1qGOoPJu1Qzdym12tX/fj179kS/fv0078Dhj/mPRNowEJKu1O4MH2ghippAJgiC5Pyh1hJzweRdqpm7lCr27X+/xYsXh1wMXO35ENH3ODRKupILYv7EoPbee+/59BbVBLKNGzfKzh/qXWJOzdylfw/N5XLJvq6NGzcqln0L9XyI9GamYVGAPULSkdreoLfNmzfj0ksv9VQTUhPI/P/u3VPMyMjQtcScmtJtUj00qfMGgLq6upB6cNHad5LIzBgISTdKQUzOhg0bkJWVhZiYGMU5O7fbjfXr1+P8+fM+t3sPeerVOtU6dyn+LVBVHaC9VxjMvB7zH8kIzNYbBBgISUf+QczlcuGzzz6D2+32HON0OnHZZZfh008/9dQebWho8PRglObsysrKOgRBoGNPSEtpNrXHap27FP+m1DgItlfI/Eei4DAQkirB1PiUCmKjR4/ucJzL5cI777zj+V1tD0bLQpjdu3er3plezS72aucug6W1VxjNfSeJRGbsDQJcLEMq6ZmXFmxdT7ULYaqrqzssVpEjtbAl2Oeuq6sLamgY+L5XqFa09p0ksgL2CElRMHlpanuQocxrqc358w5ISkOEalMPgp279H+NgSq/aOnBRWvfSSIrYCAkRUrBQSroqRle9H9sb2rmtdTk/LlcLsyfP9/ze6AAq2XrJaXnrqqqChgEASiWP/MvBu5/X+//ebT2nSQSmfnzx0BIAakJDv5BT6kHKX6Jp6en6z6vpSWdIJypB0o9NJfLhc8//xw//OEPERMT02Gj4tzcXAwePFi2B1dWVobVq1djxowZ+MlPfqLp3IjIFwMhBaQUHKSCnlIPUgycEyZM0LxFkhZahl3DnXqgpYfmv1Gxw+EIuCOHy+XCunXrAABvvfUWrr76ai6Aoagyc28QYCCkANQEB/+gV1FRgc2bN0seGxMT4/OYFRUVuPfee33SKfyFM9ldpJT0rnRsuGntiZaXl3t20mhqakJFRYWnAAERacdAaGNKC1qUgoNU0PPf88//S937Mevq6uB2u3UJMFrSCQBELfVAa0/U5XJ59nEUrVu3zlOAgIi0Y/qEjQVKiVATSNatW9ehJ+O/55947KZNm9DW1haxOpha0gmimXqgpifqzbs3KBJ7hUTRYPZhUYA9QttSWtCiJjhIBT25Y/034/W+XY9hR63pBNFIPdCaBC/VGxSxV0gUPAZCm1Ja0KIUSPxXOarhvRmvSK9hR63pBNFo1WrpiQ4aNEiyNyhSM1cYTHUgokCs0BsEGAhtSU1KRKBA4r/KUS2pRTF2roOppdcaqDcoUuoVqs3tJLIbBkIbCjVfTu2uEhMmTEBaWhrcbneHRTTe7FoHU0uv9ciRI4pD0U1NTaiursbgwYM7/I271hPJYyC0GKXhr3Dky6ntyQwfPhyxsbGoqqoK+CUear6gHQRKMVFznNxQOIdLKVhWGRYFGAgtR2n4Kxz5clrn31gHM3QDBw7s8D8U52lzc3MxYMAAxMbGYuDAgR3uG2goXMuuHERWxUBoIUrDX2p2jDfCwhXqyP9/6D1PG6gKDSA/FO6dB8rhUtLCatcz8wgtRGr4y5uauT3vfDlBEHDixAnF4tAUeUrvtSjQULh3Hqiaba+IrIqB0CLkhr+8k9XFIcqZM2d6fq677jqfxxkzZoxniFLPPQgpeIHea/+GS6ChcO95Wz2LG5C1WK03CDAQWoaazW3F4bXs7GxkZ2cjMzMTlZWVnr87HA4cPHgQDodD9Qa1FHly7/Xrr7/u03BRMxTu/xjsFZIdMRBagNJKULkgFih4qh16o8gK9F6LBQvE91xtmov3Y7DRQ3bExTIm5b3sPZiVoIG+UP2T5e2a52dEgd5rcUhUfM8zMjIkV+vKVQWyc3EDUseKw6IAe4SmJc7flZWVqapX6d/KD/SFWldXpzjMSpGnZahz06ZNcDgcPkPhUsPh/tgrJDtiIDQh7y/EDRs2aN45QcsXqohfkNGnZahTruESzZ02yNys2hsEIjA0unz5cjz77LOoqanB8OHD8eKLLyIrK0v2+GXLluHll1/GyZMn0aNHD9x+++0oLCxE586d9T5V0/DuzTU0NGDMmDG4/PLLZY/3T1bXOncEcNjMCKQKE8iVr5MbzhYf4/Dhw5LDo7m5uRg8eDCLG5Ct6BoI165di4KCAhQVFSE7OxvLli3DuHHjUFVVhV69enU4fs2aNZg7dy5WrlyJ0aNH45NPPsHdd98Nh8OBpUuX6nmqpiG1dP7gwYP4xS9+oXr+Tq7SC2uCGptUYYKysjLJ90uu4RIbG4sRI0ZIFvB2OBySyfksw0ZWp+vQ6NKlSzFr1izMmDEDQ4cORVFREbp06YKVK1dKHv+Pf/wD11xzDe644w707dsXN910E6ZOnco8Ni9q0iSU+KdRiD/Jycmqa4JS9Kndz1DL/LDcZsDMJ7U3Kw+LAjr2CFtbW7Fnzx7MmzfPc5vT6UReXh5KS0sl7zN69Gi8+uqrqKioQFZWFj799FO8++67uPPOO2Wfp6WlBS0tLZ7fGxsbw/ciDCYcBbMDYU1Qc9G6nyEQ3GbA3LWCrE63QHj27Fm4XC6kpKT43J6SkoIjR45I3ueOO+7A2bNnce2110IQBFy8eBH33Xcffvvb38o+T2FhIRYuXBjWczeqcBTMDoQ1Qc0lmIaL1uCptIEzWZ8dvhMMlUdYUlKCp59+Gv/7v/+L7OxsHD16FHPmzMGiRYswf/58yfvMmzcPBQUFnt8bGxuRnp4eqVOOGK0tebK+YBouWjcDVtrAmcgKdAuEPXr0QExMDGpra31ur62tRWpqquR95s+fjzvvvBP33nsvAODKK69Ec3MzZs+ejf/5n/+B09lxSjM+Ph7x8fHhfwEGE8wwGJE/LcGzrKwspA2cicxCt0AYFxeHjIwMbNu2DZMmTQLQvipx27ZtyM/Pl7zPhQsXOgQ7seVp9x0QOH9HkaT3fDSZgx2GRQGdh0YLCgowffp0ZGZmIisrC8uWLUNzczNmzJgBALjrrrvQp08fFBYWAgBuvfVWLF26FCNHjvQMjc6fPx+33nqr7S8675Y8l7OT3vSejyYyEl0D4eTJk/HVV19hwYIFqKmpwYgRI1BcXOxZQHPy5EmfHuBjjz0Gh8OBxx57DKdPn0bPnj1x66234qmnntLzNE1HaRd6olBwPpoA+/QGAcAhWGzMsbGxEYmJiSgpKUG3bt2ifTph53K5MH/+fNTV1aFHjx548sknfYaPlXqK7E2SkqqqKlUFLAoKCjgfbWFWCIRiPGhoaEBCQoLscYZaNUrKAi1nV9NTZG+SlPiXYcvNzcWAAQN8juF8NFkJi26bSKCdydVspMvNdkkNsQybuEtFZWUlMjMzfaoQZWRkIDaW7WirskJvUAsGQhMJdSNdbrZLavGzQnbCQGhQgiDgxIkTnrQRpY105XqKokC9SSKRIAj49NNP+VmxMbv1BgEGQsPyL3Qc6ka64SjWTdZXXl6OxYsX87NCtsJAaED+c3ltbW0hbaSrlBzNlj4BgdMm+FkhK2MgNCD/+ZktW7aEtJGu1m13yJ7kPicAPyt2YcdhUYDpE4YjNZdXUVGBe++9F2632+dYNRvpbty4MeDzMTnaXuTySJWS6AF+Vsi6GAgNRmour66uDm63u0PeX1VVleJGuko9SRbrthe5PNJAvUERPyvWZtfeIMBAaChaCx2rKcQttvoDFRBicrQ9yG2yG6g32K1bN9x+++2eUoj8rJAVMRAaiNZCx9xIl7SQq0oUqDfY1NQEp9PJKkRkaVwsYxBqCx1z1R4FQy6PVGlFMj939mD3BjUDoUFo2XiXSCu5PFKlFcn83JEdcGjUILjxLukl0Nyz3Ipkb/zcWZvde4MAA6FhKM33icveuWydtFKqSiS1IpnITjg0ahL+JdeI1NB77tm/Ji6RGTEQmoD3l9nGjRu5cIFU03vumQ00c+OwaDsOjZqA99BWXV1dhzQKaud/Ue/ZsydKZ2Ices49y+UlEpkNA6HBSQ1tbdy4kV86XuRatd632zUo6plrKpeXSObA3uD3ODRqcFILHcReod1lZGSovpi1HEvKuL8lWQkDoYEFWuhg97nCYIMag2F4cH9Lc+N14IuB0MAClb6yc68w1IuYvcPQcH9LshoGQoNSsy2O3XqF4Q5gDIbB4f6WZDUMhFEml4eltOwdaO8VsvRVaBgMtVHTQGOv0Nj4me+IgTDK5PKw+vbti+7duwe8b/fu3dG3b18dz8449Lx4+cWgnpoGGmuTktkwfSKKAuVhnThxAufPnw94//Pnz+PEiROW3yQ1EoEqIyPDtikWWkjlJX7yySfYuXOn5/frr7+etUnJVBgIoyhQHhaLcLeLZG+NwVCZf16iy+XCm2++6XPMnj17MHny5EifGqnA0Q9pDIRRIjXX4t0r5Ka7FC1igffLLrsMDocj4LHl5eVoamryua2pqQkVFRXIycnR8zSJwoZzhFEitfKOK+58RaMhwMaH+vqhLpcL69evl/zbunXruGDGYPjZlsdAGAWBVt5xxV27aF60dv7C8J+3DvRZlOoNisReIZEZMBBGQaBEefYKjcGuwVBq3lpKoN6giL1CMgsGwghjHpYyowQho5xHpGipH1pdXS3bGxQ1NTWhuro67OdJ2tnts6yV7oFw+fLl6Nu3Lzp37ozs7GzF4ZJz587hgQceQFpaGuLj4zFw4EC8++67ep9mxDAPKzBesNGjpX6o2+1W9ZhqjyOKJl1Xja5duxYFBQUoKipCdnY2li1bhnHjxqGqqgq9evXqcHxraytuvPFG9OrVC+vWrUOfPn3w2WefISkpSc/TjKj+/fvj3nvvxRtvvCHZou7evTsmT55s+bQIs7BLSoVS/VD/bb8GDhzok95TXV2NHTt2eP6em5uLwYMHY+DAgfqfPAXExqUyXXuES5cuxaxZszBjxgwMHToURUVF6NKlC1auXCl5/MqVK1FfX4+3334b11xzDfr27Yvrr78ew4cPl32OlpYWNDY2+vwYWWxsLFwul+yw0vnz5+F2uxEba7/MFqNesEY9r3DSWj9UTO/Jzs5GZmYmKisrPX9zOByorKzEiBEjbPk5JvPRLRC2trZiz549yMvL+/7JnE7k5eWhtLRU8j6bNm1CTk4OHnjgAaSkpGDYsGF4+umnA86XFRYWIjEx0fOTnp4e9tcSTkpzhKzgT5EW6meSWzKR2ekWCM+ePQuXy4WUlBSf21NSUlBTUyN5n08//dSz0uzdd9/F/Pnz8dxzz+F3v/ud7PPMmzcPDQ0Nnp9Tp06F9XWEm9IcofglYrc5QqP3uox+fqEI5TPJLZmMzcqf23Ay1LiF2+1Gr1698Mc//hExMTHIyMjA6dOn8eyzz+Lxxx+XvE98fDzi4+MjfKbq+VfpYOk087LqfGEon0k1Q6pi2UAiby63gIrj9fjy/Lfo1b0zsvolI8YZuJKRXnQLhD169EBMTAxqa2t9bq+trUVqaqrkfdLS0tCpUyefSfkhQ4agpqYGra2tiIuL0+t0dVNeXo5Vq1Zh5syZyM7OZuk0Cfx/RFewn0m1Q6r+C20oMox8XRUfPIOFmytxpuFbz21piZ3x+K1DMX5YWsTPR7eh0bi4OGRkZGDbtm2e29xuN7Zt2yZbg/Caa67B0aNHfZZcf/LJJ0hLSzNlENRSpYOC53ILKD1Wh437T6P0WB1cbkH5TkEy8pdLpHGYn4JRfPAM7n91r08QBICahm9x/6t7UXzwTMTPSdeh0YKCAkyfPh2ZmZnIysrCsmXL0NzcjBkzZgAA7rrrLvTp0weFhYUAgPvvvx8vvfQS5syZg1//+teorq7G008/jf/6r//S8zR1E2h3CWoXamCJRsvSqkOkWnGYn7RyuQUs3FwJqaaqAMABYOHmStw4NDWiw6S6BsLJkyfjq6++woIFC1BTU4MRI0aguLjYs4Dm5MmTcDq/75Smp6fj/fffx0MPPYSrrroKffr0wZw5c/Doo4/qeZq6kKvSwWGi8BFblv4XldiyfPmXo6IyzGIXHOY3LqO+LxXH6zv0BL0JAM40fIuK4/XI6X9pxM5L98Uy+fn5yM/Pl/xbSUlJh9tycnJQVlam81npL9CScvYK24VysUa7ZcleIZF2X56XD4LBHBcurDWqg1CXlAuCgBMnTkAQ9JvrMjstLUsiOzFqbxAAenXvHNbjwoWBUAdaq3T4U7sfnJmFerEaoWVp5C8co2HjjgAgq18y0hI7Q26MxoH2Of6sfsmRPC0GwnALtUoHV5qqY9SWJUmzQ+OOlMU4HXj81qEA0CEYir8/fuvQiOcTMhCGWShLygVBwHvvvadqPzi7M0rLkr1CZWzcRY4ZPo/jh6Xh5V+OQmqibyM1NbFz1Ba4GaqyjBWEsqS8tLQUmzdv9vxu1ZWm4bhYxZbl/a/uhQPwWTQT6ZYlF84ExjQi8jd+WBpuHJpq/coydhVKlQ7/Hb+50jQwsWXpn0eYGsUKFeSLaUSRY4beoLcYpyOiKRKBMBCGmX9tUbXKy8slt2ay2hdHuC9Wo7Qs2SuUxjQiezJSHVE1GAjDzL+2qBpSvUERvziUGallSd/TutkvWYPR6oiqwcUyYRTsogC53qDIKlvamG3oRiurvz6tlNKIdu/eHYWzsiajfPaMWEdUDQbCMJJaFKDE5XJhw4YNAY9h8WIyG6U0IgCevUfJGpSqPQHt1Z70LIofLAbCMJFbFKB0oe/evRuNjY2yf8/NzcXMmTMxe/ZsFi82AaO0zKNNKY0IAM6fP4/q6uoInZF1GeUzZ+ZqTwyEYRJoUYAcNcn3lZWVyMzMREZGBmJjzTula5SLlSKjf//+GDNmjM9tubm5uO6663xuq69v/1Jk5RnzM0K1p2AxEIZBsLVFuZ+bNTHot3/2Dxw44PP7oUOHUFlZ6XPcli1b4HK5WHnGAsxc7cm8XQwDUVNbVGrFp132c2NgsB+pERKpa+Ts2bOoqKjwFJLgalJtjHRtidWeahq+lZwndKA9xzfSdUTVYCAMkdraolIXN/dz00+085jsnFeoZqGMt3Xr1nlWTTNVyLyMVO1JKwbCEGkZ3hw0aFAEz8y+zJjHZCVyIyRyvFOHmGOonhEb0Wat9uQQLDY73djYiMTERJSUlKBbt266P9/Fixfxz3/+U3F4c/jw4aZe7BKsSF+scrvWi23QSBf1tVuv0OVyYf78+ZoCoRQtBSnsyoiBUBTtERmRGA8aGhqQkJAge5z9vpnDzH94M9gSaxS6aO9aL8VuQ6Rq0iaUsFdofmar9sRAGGZiibUZM2YgNTXV1gEx0i1WLXlMZrpIzURqAZjL5UJFRQUOHz6s6jFYVlCZkXuDoYpGb5KBMIy8Fwm89dZbaGpq4hBPBBk1j8lOvUKpBWAulwvvvPOOpsdhr9CeojW/zzzCMPJeJCAuALBCjVCzMHMek5UFM1zKHFr7iWadUvYIw0RuybjUEI8d5hGjMXRj5DwmO/UK/ckNl3722Wdwu90AAKfTicsuu8yn92eFHFo9WHFYNNrz+wyEQZAKZIGWjPsP8QSzVRMpM3Mek5XJ5cuOHj06CmdDRhTt+X0OjQbBvxyUUgKxd83RYLdqMpNotljFPKbURN/hz9TEzhFPnSAKNzP3Bl1uAaXH6rBx/2mUHqvz2YUi2vP77BFq5B/IMjMzVSUQSx3LlXH6MMqu9f7sPDyqlh2mDexIaRFMtOf32SPUyD+QVVRUqConJXWsVTbcNSIxj2niiD7I6X9p1IMgqcPi29ajZhGMOL8vd5U60B449ZrfZyDUQGrPwQ0bNqheEbdu3TrNWzWZjZmHbiKB/x95dpg2CIUZPztqN+sF2ufvAXQIhpGY32cg1ECqon5DQwPGjBmDCRMmKN7fu6aiiL1C+zHjF1okSE0bkLlpWQQTzfl9zhGqFGjPwYMHD2LBggVIT0+XrTlaXV2NHTt2dLjdSlU0zPYFb5R6iCQ92sKE+u+Z7doSaV0EE635fQZClZT2HNy/fz+ys7MlJ/tdLhc2btwo+9i86COPO1QYi9Roi1UaiHYWzCKYaNQp5dCoCmr3HJTbaZs70RtLNCtYiMzawtdDoNEWThuYW7QXwajFHqEKagNZdXW154Jev369p4dnh53ozfLFHu0KFtSR0miL3XuFZrm2pJilyEVEAuHy5cvx7LPPoqamBsOHD8eLL76IrKwsxfu98cYbmDp1KiZOnIi3335b/xOVoTaQ1dXVeS7ohoYGvPHGG5g2bRp3ojeQaFew8Ma8QvWjLZw2MC+5zXp/0LUTfjdxmCGmInQPhGvXrkVBQQGKioqQnZ2NZcuWYdy4caiqqkKvXr1k73fixAn893//N6677jq9T1GRmkAmbkjqbefOnfjFL36BTp066Xl6pEG0K1iQLy3TBoMGDYrgmRmDVRrQ44elwe0GHtt4EPXNrQCA+uY2LNpyGE6nI+rBUPdAuHTpUsyaNQszZswAABQVFWHLli1YuXIl5s6dK3kfl8uFadOmYeHChdixYwfOnTsn+/gtLS1oaWnx/N7Y2BjW81dLanjH7XbjzTffxLRp06JyTpFipos12hUs/Nm9V2iHaQNqn5d/YM3eDlMS4rx8tMsf6hoIW1tbsWfPHsybN89zm9PpRF5eHkpLS2Xv9+STT6JXr1645557JFMOvBUWFmLhwoVhO+dgBBreYa/QWIy8Q4UdaZk2YPk1czLDvLyuq0bPnj0Ll8uFlJQUn9tTUlJQU1MjeZ+dO3fiz3/+M1asWKHqOebNm4eGhgbPz6lTp0I+b60C1RoVe4VWZaTeYKCiviJx8h6ITgULKUb6HxqZ3cqvWeVzoWVePloMtWr0/PnzuPPOO7FixQr06NFD1X3i4+MRHx+v85nJU5rsB9grjAQteYFyk/epzCM0LKli91w8Yw5mmJfXNRD26NEDMTExqK2t9bm9trYWqampHY4/duwYTpw4gVtvvdVzm7hxZ2xsLKqqqgw3V6Bm9223240tW7Zg0qRJkTkpmxHzArXMPxhthwq7zxUq4a4t5mW0eXkpug6NxsXFISMjA9u2bfPc5na7sW3bNuTk5HQ4fvDgwThw4AD279/v+fnZz36Gn/70p9i/fz/S09P1PN2g9O/fH9dff73icRUVFZZLDDbC0I3aor5yw6TcocL45MqvWe168maEaysYUtMTZkiq131otKCgANOnT0dmZiaysrKwbNkyNDc3e1aR3nXXXejTpw8KCwvRuXNnDBs2zOf+SUlJANDhdqNwOBzYt2+f4nF1dXW2XQKuJyPlBYaKvUJpLL9mDoGmJ4yeVK97IJw8eTK++uorLFiwADU1NRgxYgSKi4s9C2hOnjwJp9O8ld52794tmbKRm5uLAQMGeH7nEnB9fFApvejKH/MCzUmp/JoV5wrN2BtUMz1h5Hn5iCyWyc/PR35+vuTfSkpKAt539erV4T+hMAl0kVZWVmLKlCmWu0hFRrhYiw+ewZ93nVB1bDTnHyh4LL9mfGqmJ3674QDK5uUZal7em3m7Ygag5iIlfYgXnxIjzD9oYYQGhlFoKXZP0aM0PQG0V5H5SeE2bK2sMeS8PANhkHiRRpeaiw9ob5GKeYOBcgzV5CBSZNlx1xYzNoTUTjvUN7fivgjt7qKVofIIzcTONRKNcLGqvfhmXtMXAHDt4u2yOYZG25uQi2ba9e/fH2PGjEFJSQlyc3MhCIJPpanc3FwMHjyYc+9RpnXaYe5fDxhudxcGwiCxRmJ0qb34Ei+JCziJPzu3H/740XHD1kC0E/8Sag6HAwcOHAAAHDp0yOdYK87DG6GBGQylsoX+zl1ow0vbj2JO3hW6n5taDIRBsuvWSkZ5zWpqhqYkxOP1ipMBaxyu2NExCHr/PVo1EK3cK5SrGVpeXo5Vq1Zh5syZyM7O9pmD9x994WIZ4/Dec1CtVf84jvwbBhimV8g5QjIlNTVDp2b9CDWNgXMMA00FGqEGohVJ1Qz1L6HW1tamWLqQ8/DGIZYtTO6qrozkuQtthrquGAjJtMSLLzXRd5g0uWsclt8xCn17dA3L80QrB9Eove9w8g94YhDzL6G2du1axdKFVlqdbYX3evywNJTNy0PXeHVD1UbK7WUgJNWMeLGOH5aG+bcM8WmJ1jW3YtGWSpw42xyW52AOYvhI1QyVWoG9a9cuVY/HXqGxxMU6Mfu6y1Uda6TrioGQTK19w899qG9u87m9puFbPP9BNZK6dApY4zDQFIURchCN2PgIllzN0PLycslNrdWwYgqF2eXfcAWSusgPkRrhuvLHxTJkWmo2/BTJ1TicdV37qlHI/D3aNRCtRK5m6Pr16zU9Tvfu3XHbbbd5SjOafXW2lRo7QPv8/TM/v1JytbZRryv2CEkVI16sagpun7vQhgfzBnaYR0xN7IyXfzkK824eKjnPKP7dCKkTRvzfaxWoAEVTU5Omxzp//jySk5ORnZ2N7OxsZGRkIDaWbXojEefv0wx8XXnjp4dMS+1ke98eXbDz0RtkaxwabW9CK5IrR6ikW7duuP322+FwOHD27Fn06NEDnTp1MnUP0JsVGjlyzHRdMRCGQC4fiiJDy4af4t6DcpT+Hm1mzitUKkcYSFNTE5KTk/H1119j8+bNmDlzpqWDh9UY/boSMRCGwD8B2KqM+sWjJqk+1WCT8nakVI5QNGHCBKSl+Q6ZxcbGom/fvvjLX/4CAJbdeomii4EwSP75ULw4I8+7ooVRN/wk9eUIhw8fLjnXV1ZW1iHlwgoNT6M2MO2IgTBIFRUVlrw4zUaclDfqhp/hZNbh0VDKEcqlXLDhSeHEQBgEl8uFdevWeX638sVphlarmSblSRu5lAuzNzzNcF2Fi8stGP7aZCAMQnl5uc+Sb6tcnGZmlkn5UJm1VxgMuUU2Vm54Wo3RtjiTwzxCjVwul2QCsBVLPdmp1UrGI5dyYaUao1ZWfPAM7n91b4dcX3GLMyNt0MtAqJF/b1DEi9M8zL4bvR0aKEopF2ZueNri/VOo+gS0b3FmlGuPQ6MayPUGRRyyMT6zDNXYnVLKhXeN0UGDBkXwzMif1BygmqpP4hZnRpjSYCBUSRAE7NixI2A5KCtdnFZstYpDNVbYjd7qc4VqUy6sUmHGrOQaljcPS1V1f6NsxcRAqFJ5eTlef/31gMfk5uZi8ODBvDgNSE2B7mjtRk8dxcbGYtSoUZar3GSlBmaghuWfd51Q9RhG2YqJc4QqqCkR5XA4UFlZiREjRrAAsAFpGaohY5DayZ6MQc0coNOBgFugGWkrJgZCFdQUDLbSvmhWarWK1A7BGGWoRg0rvk8iuZ3szcxK75dSwxIA3ELH7dAAY1Z9YiBUoLZgcG5uLmbPns1hUYPSUqCbok9qJ3syDrUNxpnX9DX0FmcijuEpUNMbFIdFp0yZwtWiBmXVAt1WXDTDsmrGp7bBeOPQVPzPLUMNX1mGPcIA1PYGrZRDaKXhG29igW5A3VCN2XMNzSxQWTWzstp1JTYs1cwBilWfJo7og5z+lxouCAIMhAFp2UzUzAm+diEW6FYaqik+eAbXLt6OqSvKMOeN/Zi6ogzXLt5uqEoY3qz0JatUVs3lcuHEiRMQBDZMoklrw9LoODQqQ+tmolbKIbQypQLdVso1NCOlsmqvv/46duzYYao9QK3UUPFmpZ1fGAhlBLOZqNkTfK16wfqTK9Bt5lxDK8wVqml87tq1CwD3ADUKq+z8EpFAuHz5cjz77LOoqanB8OHD8eKLLyIrK0vy2BUrVuCVV17BwYMHAbRf4E8//bTs8XoJdTNRMh+zlYWyGjWNT7fbDYB7gBqFGbZYUkP3b/C1a9eioKAARUVFyM7OxrJlyzBu3DhUVVWhV69eHY4vKSnB1KlTMXr0aHTu3BmLFy/GTTfdhEOHDqFPnz56n65HKJuJmpEVXmuoF6XZcw3N3isM1Ph0u91Yt26dp8ShWVaSWuG6kmOlur26B8KlS5di1qxZmDFjBgCgqKgIW7ZswcqVKzF37twOx7/22ms+v//pT3/C+vXrsW3bNtx11116n66HIAiWK+9kZeG4KJlrGF2BGp9lZWXcA9RArDaXruuq0dbWVuzZswd5eXnfP6HTiby8PJSWlqp6jAsXLqCtrQ3JydL5XS0tLWhsbPT5CQeWdzKPcO17pmVJuFFZsQeiZiWpEVnxvQDMt8WSGroGwrNnz8LlciElJcXn9pSUFNTU1Kh6jEcffRS9e/f2CabeCgsLkZiY6PlJT08P+bytWN4pEDNfsOG8KK22JNwquEGvsVixbq+h8wifeeYZvPHGG9iwYQM6d5Yejpo3bx4aGho8P6dOnQr5eVneyTzCfVGqzTWkyLDyBr1mZfa5dCm6zhH26NEDMTExqK2t9bm9trYWqamB96tasmQJnnnmGXzwwQe46qqrZI+Lj49HfHx8WM4XYHkns9HjojT7knCzL5rxZtYNes08yqLEinPpugbCuLg4ZGRkYNu2bZg0aRKA9tVf27ZtQ35+vuz9fv/73+Opp57C+++/j8zMTD1PsYNA5Z2sOClv9gtWr4tSLteQIosb9BqPFev26r5qtKCgANOnT0dmZiaysrKwbNkyNDc3e1aR3nXXXejTpw8KCwsBAIsXL8aCBQuwZs0a9O3b1zOX2K1bN3Tr1k3Xc1WalGev0HiseFGGgxV6hYIg4PPPP8eoUaO4cttAxLn0+1/dCwfgc92ZdS5d9znCyZMnY8mSJViwYAFGjBiB/fv3o7i42LOA5uTJkzhz5vtVfS+//DJaW1tx++23Iy0tzfOzZMkSvU+Vk/ImxAUu1mXWldtmH2VRw2pz6Q7BYtVrGxsbkZiYiJKSEk09SJfLhfnz58vORzgcDlx66aV48sknLdMrtNIFa6Xk3nAya6/Q+3rs0aOHqa47K11XSoxeWUaMBw0NDUhISJA9jrXBvmPWSXlqZ/YFLuTLf+X27t27kZqaavgCF3YKgoB15tIZCL8T6qQ8K9FEn1UuynAy41yh1Mrtt956C01NTabadcJOjN4zVMJA+J1Qa4uWl5dj1apVprlQ7dZyJfOQWrktllfjojXjscK0hKET6s3CbpVoyFzM1OhRSqA38qI1M/2fwyVc5Q2jjYEwDFiJhig85FZue2Nj0xisVHOUgVCGIAg4ceIElBbVylWiMfKFauWWq8stoPRYHTbuP43SY3WmuAgjwQzvuZqNeQFjNjbN8P8NNyvVHOUcoQy1c352q0RjZFaYq7AzNRvzijhXGH1WqjnKHqEEtXN+ZtwexqotV6vMVdiZuHJ75syZuO666wIea8Reod1YqeYoA6EEtXN+rERjDFaaq9CT0RtB4srtzMxMVFZWBjzWSI1No/9f9WKF/TtFDIR+1M75cXsY47DSXAWpWzDjXeCCosNK5Q05R+hH7ZyfGSvRWLXlaqW5Cr0ZPcFeqoHZrVs33H777XA6fdvtRth1wqrXVCD+yfPL7xiFRVt85+ZTTTY3z0DoRcvuE9wexjisNFdhd1K9waamJjidTi4+MwC5BWnzbxmCH3SNZ2UZK1Az5ydejKFWoqHw4VZM2hitVyiWJ0xPT+c2aAYmLkjzv8ZqGr7FA2v24eVfjsLEEX2icm6h4hzhd6w+52floG2luQo7Erdbev311021+MzK15Q/qy9IYyD8jpY5PzIeq+2PpjejfIl7N0B37dole5zZG6JmZ/UFaRwa/Y7cnF91dTV27NiB3NxcDB48mHN+BsatmMzHezrC7XbLHme0xWdGaUhEitUXpDEQfkdqzs/lcmHjxo0AgMrKSkyZMsWUcxR2umi1bsVk9u1jQhHtuUKp6Yju3bvjtttu67BCFODis2iy+oI0BsIApBLruXLNOliSLbqkFqedP3+eK0QNyOoL0jhHKMOMxbRJPZZkaxet0QIzlicU2WmERRTMgjQzFcBnIJQRKLHeTOx40Sqx+go4M2B5QvPRsiCt+OAZXLt4O6auKMOcN/Zj6ooyXLt4u2EbmAyEEszcWiVlVl8Bp1WkG0tmTlWye8Ny/LA07Hz0Brx2bzbyfzoA+T/tjyW3D8eNQ1M9x5hxtIWBUIJVWqt2v2jlWH0FnNExVcnctlbW4L/f+ide+vAoXvrwGKb9udzT2zPraAsXy/hR21pllQvzsvoKuGBEcgUpyxOaV6DqMve/uhcP5g1UPdqiZXW33hgI/ZixmDZpY/UVcEZn1vKEZjzncFLT21ux45iqxzLaaAsDoR//1qp3Qv2AAQMAmKO1aveLNhBxBdz9r+6FA/C5sKVWwNkl1zDaeYVqibVJL7vsMjgc1nsfjEppbh0AmlrUzesabbSFgdCPd2vVKgn11JG4As4/j9B/+xjmGhpPWVkZVq9ejRkzZuAnP/lJRJ6TDcvw9OKMOtrCQBgAE+qtTakkm9x8yJmGb3Hfq3vxv3eMxM1X9Y78ievI6L1Cl8uFdevWAQDeeustXH311WycRkiovTgjF8DnqlEZahLqBUHAiRMnIAjGWgHF1qt6Ykm2iSP6IKf/pT7DoXLzIaL81/fh3X8Zbyl4qIz8+SkvL0dTUxOA9n0KKyoqdH9OI/8/IkmcWw82hBm5AD4DoQw1CfXi9jGRuBgpstTMh7gF4D/XGDMvyopcLhfWr1/vc9u6desMmW9oRd7VZdTK/+kA/GHKCLw+6yfY+egNhgyCAAOhJDUJ9d7HGDX5l4KnZT7EiHlRoTJiL8i7NyiKVK+Q2o0flobZuf1UH3/NgB4dRluMiIFQgpqEeqn5QyMw4heYGWmZD7FTFZpokeoNivTsFfJ68uVyC9j0T+UREAfaF5UZbVGMHAZCP2oS6jdu3MiC3BbjXyA447IfIC1RfTA0Wl5UOBgpCEj1BkXsFUaOmikDoD0lyYiLYuREJBAuX74cffv2RefOnZGdna34oX3rrbcwePBgdO7cGVdeeSXefffdSJwmAHUJ9XV1dZYoyE3tpAoEX//sh/jZcPXzGUbLi7KSQL1BkR69QiM1BIxCbYNv5jV9DTsfKEX39Im1a9eioKAARUVFyM7OxrJlyzBu3DhUVVWhV69eHY7/xz/+galTp6KwsBD/9m//hjVr1mDSpEnYu3cvhg0bpvfpKpZ/crvdWL9+Pc6fP+9zuxFKr/HC1S5Qyag/fnQcs67rhz/vPA65KUCj5kWFixHSKaqrq2V7g6KmpiZUV1dj8ODBETore1Lb4PMuwm0GuvcIly5dilmzZmHGjBkYOnQoioqK0KVLF6xcuVLy+D/84Q8YP348HnnkEQwZMgSLFi3CqFGj8NJLL+l9qgC+T6jPzs6W/HE4HB2CIMBeoRkplYwSALzzrzN4YfJI2ccQAEy5+kc6nSEB7Y3PcB6nBhuV0pRSKMw2NyjStUfY2tqKPXv2YN68eZ7bnE4n8vLyUFpaKnmf0tJSFBQU+Nw2btw4vP3225LHt7S0oKWlxfN7Y2Nj6CcugwW5rUXNfMeZhm9xafd4FElUoRE9/8EneGP3SctWm4l2r3DgwIGqinQPHDgwgmdlHVpKCGotT2gWugbCs2fPwuVyISUlxef2lJQUHDlyRPI+NTU1ksfX1NRIHl9YWIiFCxeG54RliLUNW1paDFuQmy1Y7Woa1c131DR+i38f2Qc3Dk3FS9ur8fwH1R2P+a76vlEThs0s0kW67XQtBVNCUG15QjMxfYm1efPm+fQgGxsbkZ6eHtbnKC8vx6pVqzB9+nRuH2Mh9U0tygf5HffG7lOSxwhobxEv3FyJG4emmq5FrCTavUIKP6UtlQI16pTKE5qNroGwR48eiImJQW1trc/ttbW1SE2VnkxNTU3VdHx8fDzi4+PDc8ISvIdDt2zZgieffNJww552asGGU3LXOE3HadnZ3kh7rRH5U5ofV9OoE8sTWoGui2Xi4uKQkZGBbdu2eW5zu93Ytm0bcnJyJO+Tk5PjczwAbN26VfZ4vRk1cZ5Cl5p4iabj7L6zvR0aXHZ4jYC2Rp0d6L5qtKCgACtWrMBf/vIXHD58GPfffz+am5sxY8YMAMBdd93ls5hmzpw5KC4uxnPPPYcjR47giSeewMcff4z8/Hy9T7UDNYW3ybzEFXCBXNo1DhmX/QAAd7YH7BMorC7URp1/AQqzlxjUfY5w8uTJ+Oqrr7BgwQLU1NRgxIgRKC4u9iyIOXnyJJzO7+Px6NGjsWbNGjz22GP47W9/iyuuuAJvv/12RHII/QUqvG2U7Zj4xRQ87xVwcpdxXXMrrn/2Qzx+61DcODSVO9tbmJ2upVAadVbco9MhGG0PoRA1NjYiMTERJSUl6NatW9CP43K5MH/+/A6rRB0OBy699FLDzBXa6eLVi9SF7U2cIXn5l6MAAPe/uheA9NJxu6wateLCGTtdSy63gGsXb1ds1O189AafOUK5BTZG/fyL8aChoQEJCQmyx7HWqAw1hbfJGsYPS8PfH/kpkrt2kvy7eNGLiwde/uUopPoNqRp5rzVSZqcgCPhuqeS/FEYuH1BpgQ1g3p1YTJ8+oQezJM7b7eLV057PvkZ9c5vs370XD1ht6XgwmE5hflrzAa28apqBUIKawtvRSpwnfWhdPCC3dFxLlQ6zs0owtHODUkujzsqrphkIJSgV3gaYOG814VgRasVFBGR9avMBrbxqmoFQQqRLOgXD6OdnNmIqRbArQkOp0mFmZu8V8jpSL9RrxMi4WIYsT03OUzCLB7wf36qLCNRgMDEePfL8QrlGjI49QrI0LcOVwRYTtvIiAiuzagDXc4jeigW3AQZCU7LqBRxuwQxXBrMi1MqLCNQy+xCpVeg5RC8uBGu56MaS/xgOCMDZ5hZLLApjICRLCqWosNZiwlZeRGBVVmxMhqOQtpxAvUwrjHJwjtBkrHgB6yGSRYWtumu3Vmb5bJrlPLXS6zMv9jL9H1vsZRYfPBPM6RoKAyFZUiSHK628iEArqwYZM9DjM2+XhWAMhGRJkR6uFBcRsPSasYOhkc8tVHp85u2yXRPnCE3EyhdxuEUj54ml1yia9PjM22UhGHuEZEnhGq7Umo8lLrSZOKIPcvpfatsgaMRGmxHPKZz0GKK3y0IwBkKyrFCHK4sPnsG1i7dj6ooyzHljP6auKMO1i7dbYnFAJBgp8BjpXPQU7iF6uywE436EJmGXC1kPwRTCNtu+a0ZmhPxCu10/4Sz+Ll4LgPn24FS7HyEDoUnY7UKOJnHT0kAb9UptWkryohkMee2EzqwF5dUGQi6WIfITbMk0O23BZBYMguFh9YVgDIQmwIs5soJZKWfWFnOksASb+WmtuGQmXCxD5EfrSjk1lTf02A3AbCLdoGMDktRij5DIj5Z8LDX1Hef99QCe2HQINY0tnr/ZtbcYqZ4hgyBpwR6hwfGCjjwt+Vhq5hO/vtDmEwQBa9Vp1ErvzzSvGdKKgZBIgtp8rGAralipTmMw9ApWDIL6sfLwPodGDYwXdXSpWSkXSkUNu2/YK36+wzVUyutFP1ZfDMZASBSA0ko5pflENcxepzFUoQZEBkB96bnZr1FwaJQoBIHmE9Uye53GcNEa0DIyMhgENQhmaNMu2zCxR2hQvMDNQ5xPlBo6+qbNhYYLbRHbAcPsvD/3cj1EXhvaSQ1tJl3SCTOu6Yv8G66QTYwPtriE2TAQEoWB3Hzi1soa3P/qXjggXafRLhv2BoMBLzzkhjbPfdOG5z+oxqp/nMAzP79ScniT2zARkSZSWzBxw16KpkBDm6JzF9pkU3nssg0Te4QGxJawtVi9TiNFj1J9W6WhTZGA9rm+G4em+tw/GhtcRwMDIVEEWLlOI0WHmpQGLUOWUnN94mIwqw/vc2iUSAdWTj6m6FNT3xbQPmQpFTjtMLyva4+wvr4ev/71r7F582Y4nU7cdttt+MMf/iC7T2B9fT0ef/xx/O1vf8PJkyfRs2dPTJo0CYsWLUJiYqKep2oYHBY1P6snH1N0qalvKw5zikObaoZHAfnAafXhfV17hNOmTcOhQ4ewdetWvPPOO/joo48we/Zs2eO/+OILfPHFF1iyZAkOHjyI1atXo7i4GPfcc4+ep0kUNmpb6kTB0pLS4J3nGogD7Y21QHN9UovBrEK3HuHhw4dRXFyM3bt3IzMzEwDw4osv4uabb8aSJUvQu3fvDvcZNmwY1q9f7/m9f//+eOqpp/DLX/4SFy9eRGwspzTJuLS01K30JUKRpTWlYfywNBT9chTm/vUAzl1o63Ccleb6gqVbj7C0tBRJSUmeIAgAeXl5cDqdKC8vV/04DQ0NSEhIkA2CLS0taGxs9PkxKw6LmpuWljpRsIJJaRg/LA17HrsRD+UNRNIlnXyOs9JcX7B062LV1NSgV69evk8WG4vk5GTU1NSoeoyzZ89i0aJFAYdTCwsLsXDhwpDOlSgc7JJ8TNEVbEpDjNOBOXlXIP+GAZad6wuW5h7h3Llz4XA4Av4cOXIk5BNrbGzELbfcgqFDh+KJJ56QPW7evHloaGjw/Jw6dSrk544G9gbNL5iWOleXklZa9suUu79V5/qCpblH+PDDD+Puu+8OeMzll1+O1NRUfPnllz63X7x4EfX19UhNTQ14//Pnz2P8+PHo3r07NmzYgE6dOskeGx8fj/j4eNXnT6QXrS11ri6lYMnVt03l5ycomgNhz5490bNnT8XjcnJycO7cOezZs8fT29m+fTvcbjeys7Nl79fY2Ihx48YhPj4emzZtQufO5i7dQ/ahJfnYDlvbkL7UpjQoVZ8hwCEIgm5jMRMmTEBtbS2KiorQ1taGGTNmIDMzE2vWrAEAnD59GmPHjsUrr7yCrKwsNDY24qabbsKFCxewYcMGdO3a1fNYPXv2RExMjOJzNjY2IjExESUlJbL5ikbDYVFrUar0DwDXLt4uu7BG7DnufPQGfmFRSOw+6iDGA3HRpRxd8xFee+015OfnY+zYsZ6E+hdeeMHz97a2NlRVVeHChQsAgL1793pWlA4YMMDnsY4fP46+ffvqebpEYSG21F/afhSrdh3HuW/aPJX+39h9ClOuTrfF1jYUXYFGHe57dS8eyrsCfXt0ZS8ROvcIo4E9QjICuS8h/yHTQP4wZQQmjugT5jMjO3C5hYCjDv6s2ktU2yNkrdEoYxC0HjW7eqth9q1tKHrU7johsnvlIwZCojDT+iXkT025K6JAtOaqig20hZsrbZnCw0BIFGZavoSCyQMjUhLMaIKdKx8xEEYRh0WtSe2X0EN5AztsbZPcNQ7L72DqBH0vmKILYk5rME0pO1Y+YhVrojBTm1iff8MAXNGrKx7beBD1ze3FkOuaW7FoSyWcTjAYUtDpD4FyWpXYcW6aPcIoYW/QesSW+zv/+gJTrk737DjhzXvoc2tlDR5Ys88TBEV2X7hA7ULd0ktuQ105dp6bZo+QKAwkk+i7tJcG9N76RiyBdePQVFy7eDu3bCJJ4drSy7/6zImzF7Dsg088jyOy+9w0AyFRiORyBhu+C4AP5Q1E3x5dfBKXS4/VMameZGnZ0kvp8yEW2Qbw3fyigFW7TuDcNx0baHYdjmcgjAIOi1qHmpb7G7tPdiiXxi2bKBA9Ph/ypf/6If+GAbbsCYoYCIlCEGzLPZgtm8g+wv35kB21+KbNM1TqP2phJwyERCEItuX+dXMrnA5AbiW83OaqZA/Bbr4rRU2lo+e/C4aAdcutBcJVoxHGYVFrCablXnzwDB5Ys1c2CIrsunCBQt981xvLrSljICQKgVLisv+S9ECtc5HTASy/Y6StWuTUkVz6Q2piZ037VbLcmjIOjRKFQMtmvIC61rlbAH7QNV6X8yVzUbv5biChlluzw6plBsII4rCoNYktd/8VeVJL0rlalAKR200+lGCkNN8YiF0+hwyERGGgtuXO1aIkR6/d5FluTRnnCInCRGy5TxzRBzn9L5UcvtI6p0j2EGo5NSUstxYYe4QRwmFRArTPKZL1haucmpKO5daa8fwH1fwcgj1CoogL12pAsgYtRRlC5T1qMSdvIIr4OQTAHmFEsDdI/sKxGpCsIZoLqPg5bMdASBQloa4GJGuI9gIqfg45NEpEFFVcQBV9DIQ647Ao6UXcCHjj/tMoPVZnmyogVhPOcmoUHA6NEpmQUs6ZXGI2GZOWogwUfgyERAagJXDJbakj5pzNzu2HTf884/OFmty1E343cRhuvqq3jq+CQsGFK9HjEATBUuMpjY2NSExMRElJCbp16xbVc+GwKKmhpaKIyy3g2sXbNe0m4O1Xuf0w7+ahIZ0vkVmI8aChoQEJCQmyx3GOkCiKtFYU0bqljr//++g43v2XfbbXIVKDgZAoStRsmOq/FU44csnmbzzIhTUGwQVPxsA5Qp1wWJSUaKkoIuZ5hSOXrK651Tbb60SLmjlfvYpsk3YMhERREkxFkax+yUjq0gnnLrSF/bm50jQ81AQ4pQVPciXO+B7pg4FQB+wNkhrRrCji/5jsnQTPOzidOHsByz74JGCAu3FoalBFtqXeo+Sucd+tBuZ7FAoGQqIoUdow1YH2PDLviiIVx+tD7g36VykJtndC0sFJineA6x7fSfOQuNx7VN/civ9csxe/+pyrgUOh62KZ+vp6TJs2DQkJCUhKSsI999yDpqYmVfcVBAETJkyAw+HA22+/redpEkVFMBVFQl0s4/B7zGAW7FA7uRW/csQAV/rpWVXHi+91oPdI1L4a+AtVj0sd6RoIp02bhkOHDmHr1q1455138NFHH2H27Nmq7rts2TI4HOYb++awKGmhdUsmtcOkD469Asld43xuS5N4zEhuAWQlaoKTPHXfa+J7rTZl5jGuBg6abkOjhw8fRnFxMXbv3o3MzEwAwIsvvoibb74ZS5YsQe/e8hUu9u/fj+eeew4ff/wx0tI4JEPWpqWiiNrh1F+PvQK/HnuF4mNuraxRdY56bAFkZqHkc+b0vxSvln8WcIg7qUsnz/C12v99fXMbVwMHSbdAWFpaiqSkJE8QBIC8vDw4nU6Ul5fj3//93yXvd+HCBdxxxx1Yvnw5UlNTFZ+npaUFLS0tnt8bGxtDP3miCFO7FU6M04H5twzFf67Z2+FvUsOpgR7T5Rbw9n51w2l6bQFkVsE0DMRGytV9lXeR8G6uaPnfs8ESHN2GRmtqatCrVy+f22JjY5GcnIyaGvlW6EMPPYTRo0dj4sSJqp6nsLAQiYmJnp/09PSQzjsUHBYlvRUfPINFWyol/6Z1Z/GK4/Wob25VPO4HXr0TvZklwVxrw8C7kbLns68VFzx9faHNMxyd1S+5wzB3uM6L2mkOhHPnzoXD4Qj4c+TIkaBOZtOmTdi+fTuWLVum+j7z5s1DQ0OD5+fUqVNBPTeR0Sktzph/yxBNqzvV9h5aLrpVD6GGovjgGVy7eDumrijDnDf2Y+qKMly7eHuHMnPhFkzwVdpD0J93I0Vr/miM04HfTRymeDz3LAye5qHRhx9+GHfffXfAYy6//HKkpqbiyy+/9Ln94sWLqK+vlx3y3L59O44dO4akpCSf22+77TZcd911KCkp6XCf+Ph4xMfHa3kJRKajtDjDAWDRlsMYNyxNdYK12t7DhVaX7mkUkU7hEHP/PqiswYb9p1Hf/H0PTU3+pLji9/5X98IB+Jy3+PtDeVegb4+uHeZng8kfvfmqNPzq8374v4+OSx7rvxqYtNFt94nDhw9j6NCh+Pjjjz1Dhn/7298wfvx4fP7555KLZWpqanD2rO/S4iuvvBJ/+MMfcOutt6Jfv36Kzxut3Sc4LEp6Kj1Wh6kryhSPe33WT1Qvlmi96MZPCj/wCQJyxPmtnY/eEPYvW6UdNcL93Eq5f+IzqAm+wRQiEF+v0oInqdf77r++wGMbD2oO3HaldvcJ3RbLDBkyBOPHj8esWbNQVFSEtrY25OfnY8qUKZ4gePr0aYwdOxavvPIKsrKykJqaKtlb/NGPfqQqCBJZVTDl2AIRv8DVBEHg+zSKsmN1cDodYS3xFUzNVTlKJcjkep7+zydX3cVfMHsIKvUmAfne3c1X9ca4YWkssxZmulaWee2115Cfn4+xY8fC6XTitttuwwsvvOD5e1tbG6qqqnDhwgU9T0N37A2S3sJZjk1NMJDzwJq9OPdNeHsj4QrySr0zLbl/WoKv2hW/3kLZkT6Y56PAdA2EycnJWLNmjezf+/btC6WRWYvtG0wUlGDKsUkJLREcPkEQkJ/D01IcOhxBXs0cY+IlcZpz//RMR/DuTdY0fIP65lYkd4tH4iVxcLkF9vIiiLVGiUwglOE0b6Fu7OtPahhR67xZqEFeqUyceH6/GT9Y8+tTE6RD2REixulAwzet+P37VSx4HkXcmDdEHBalSNFajk2KHj0c72FEuRQPsWcmlQoRTM1Vb2rnGOubWmSP8eeAunSEUFM+gvl/UfixR0hkIsEszvAWTMJ10iWdOgyJSqlp/Ba/Lz6ieXshILQ5M7XBPblrXMCepz+lHnaoKR9qe7JKC3YodAyERCYTymIJtcOQS24fjrPNLejVvTPcgoBpfypXfOz6ppaQVn8GG+TVBvfUxEtky9N5U5P+UHasDnPXHwgpiIVztSyFhoEwBBwWJbNRO9d4zRU9PLe73IKq4Km2DNiuo2dlA1wwQV5tcP+6uQWLthyWfIxLu8Zh4ojeuHFoquS5BUrAl6ImiIU7JYaCxzlCIpvROteodg4vNfESVc//0odHw1o6Tc35/Wx4Gh5Ys0+2B7Zo4o+x4NYfI6f/pR2CoPc84J93nVCdewkEDmLhTImh0LBHSGRDWoch1czhKfUcvYW7dFqg85t/y1As2hJcebpQci6BwEEsXCkxFDoGwiBxWJTMTuswpFLwDDTs6k+PxSBy5xfsXFwoOZdqgli4UmIodAyERBSQyy2g7NM6lB6rAyAg5/Ie+Lerekt+Qcv1zKSEuhhELn/P/7GCnYsLNudSSxALZbUshQ8DYRDYGyS7KD54BnP/esBn/7yXPjyGpC6d8MzPr5T8ohZ7Zs9vrcJLHx5TfI5gFoNoSdoPdi4u2EUqWoNYqCkxFDouliEiScUHz+C+V/dKbiJ77kIb7vNK+Pbf0w8ArhnQU9XzaF0MojUJXWnvQLnkea3nlXRJJ7x2bzZ2PnqD5p6c2JOdOKKP5IId0hd7hETUgcst4IlNlYrHPbHpENxuYNGWjr2z+bcMQWpCZ9Q0Bt5eSctikGCS0IOdi1NazOLvmduuxDUDeigfSIbDHqFGHBYlO6g4Xi8bwLzVNLbgP9dI987+c80+NH4rnWoQ7GIQLQtfvAVTni5QWoa/pC6dVJ0/GRN7hETUQahJ3GIP6kKrS/LvSV064e7R/dBy0Y3SY3Wq58RCSUIPZi5O7eKfhgttYU0HochiICSiDvRO4j53oQ3Pf/CJ53e1uy0Es/BFaXcIpb+LAbTs0zo88NpeybqrrA1qbgyEGnBYlOwiq19ywPm9UKkpVC0VoLQmoSutLlW7+jTG6YDT4QhYfJy1Qc2LgZCIOohxOvDEz4bivlcDF6gOF/8e1dbKGtkApXbhi9LuELNz++GPHx1XvXsEa4NaFxfLqMTeINnN+GFpKPrlKMmFIEldOuF/7xgZMC1BK7FH9dL2owHTIwAoLnxRWl0KACt2dAyC3n9fuLkSLvf3R7A2qHWxR0hEsrznx7wry/zku1w3p9OhqqSaFqt2yQcosde489EbAi58UbO6VAhwwlLDnKwNal0MhEQUUIzTgWsG9JDMkZNbVfmDLp3w9YW2oAKklnm4ULc4UuL9OKwNal0MhCpwWJRInlxagtQ8n9MBuGUiowNA4iWdAgZCkVKgC9fwpP/jsDaoNTEQElHIpIpdSwXIr5tb8cB3O8RL9ahmXNMXz39Qrfh8SoFOzTCmQyEoyw1zsjao9XCxDBHpxr+G5s1XBa7wkn/DFUHVBZV6XqXNemdd1689IMr8PdAwJ2uDWgt7hAo4LEoUXko9qnDNw6kZxhz5ox9wmJPgEIRAa6fMp7GxEYmJiSgpKUG3bt1CfjwGQqLI07LNkpJQK8uQeYnxoKGhAQkJCbLHsUdIRIYTznk4qflLLX8n62MgDIC9QaLoYYCiSOFiGSIisjX2CGWwN0gUXZy7o0hhICQiwwnnYhkiJRwaJSJDEXeNkCu6XXzwTJTOjKyKgVACh0WJokPNrhH+u0IQhUq3QFhfX49p06YhISEBSUlJuOeee9DU1KR4v9LSUtxwww3o2rUrEhISkJubi2+++Uav0yQiA1Gza4RYdJsoXHQLhNOmTcOhQ4ewdetWvPPOO/joo48we/bsgPcpLS3F+PHjcdNNN6GiogK7d+9Gfn4+nE52XInsgJvfUjTosljm8OHDKC4uxu7du5GZmQkAePHFF3HzzTdjyZIl6N27t+T9HnroIfzXf/0X5s6d67lt0KBBAZ+rpaUFLS0tnt8bGxtDOncOixJFDze/pWjQpatVWlqKpKQkTxAEgLy8PDidTpSXl0ve58svv0R5eTl69eqF0aNHIyUlBddffz127twZ8LkKCwuRmJjo+UlPTw/rayGiyBF3jQi16DaRFroEwpqaGvTq1cvnttjYWCQnJ6OmpkbyPp9++ikA4IknnsCsWbNQXFyMUaNGYezYsaiult+WZd68eWhoaPD8nDp1KnwvhIgiSs2uEdz8lsJNUyCcO3cuHA5HwJ8jR44EdSJutxsA8Ktf/QozZszAyJEj8fzzz2PQoEFYuXKl7P3i4+ORkJDg8xMsDosSRZ+4a4TcVk3MI6Rw0zRH+PDDD+Puu+8OeMzll1+O1NRUfPnllz63X7x4EfX19UhNTZW8X1pa+4d76NChPrcPGTIEJ0+e1HKaRGRy3PyWIklTIOzZsyd69uypeFxOTg7OnTuHPXv2eHpZ27dvh9vtRnZ2tuR9+vbti969e6Oqqsrn9k8++QQTJkzQcppBYW+QyFhYdJsiRZc5wiFDhmD8+PGYNWsWKioqsGvXLuTn52PKlCmeFaOnT5/G4MGDUVFRAQBwOBx45JFH8MILL2DdunU4evQo5s+fjyNHjuCee+7R4zSJiIj0qzX62muvIT8/H2PHjoXT6cRtt92GF154wfP3trY2VFVV4cKFC57bHnzwQXz77bd46KGHUF9fj+HDh2Pr1q3o37+/XqdJREQ2xx3qwWFRIiIrUrtDPUu2EBGRrTEQEhGRrdk+EHJYlIjI3mwfCImIyN5sHQjZGyQiIlsHQiIiIt3yCKNFzAZpbm5WPDbULZuIiMi4xO94pSxBy+URfv7559yKiYiIPE6dOoUf/vCHsn+3XCB0u9344osv0L17dzgcoRfobWxsRHp6Ok6dOhXSzhZGZvXXaPXXB1j/NVr99QF8jXoQBAHnz59H79694XTKzwRabmjU6XQGjPzBCnWLJzOw+mu0+usDrP8arf76AL7GcEtMTFQ8hotliIjI1hgIiYjI1hgIFcTHx+Pxxx9HfHx8tE9FN1Z/jVZ/fYD1X6PVXx/A1xhNllssQ0REpAV7hEREZGsMhEREZGsMhEREZGsMhEREZGsMhEREZGsMhBKeeuopjB49Gl26dEFSUpKq+wiCgAULFiAtLQ2XXHIJ8vLyUF1dre+JBqm+vh7Tpk1DQkICkpKScM8996CpqSngfcaMGQOHw+Hzc99990XojJUtX74cffv2RefOnZGdnY2KioqAx7/11lsYPHgwOnfujCuvvBLvvvtuhM40eFpe4+rVqzu8X507d47g2Wrz0Ucf4dZbb0Xv3r3hcDjw9ttvK96npKQEo0aNQnx8PAYMGIDVq1frfp6h0PoaS0pKOryHDocDNTU1kTlhjQoLC3H11Veje/fu6NWrFyZNmoSqqirF+xnhWmQglNDa2or/+I//wP3336/6Pr///e/xwgsvoKioCOXl5ejatSvGjRuHb7/9VsczDc60adNw6NAhbN26Fe+88w4++ugjzJ49W/F+s2bNwpkzZzw/v//97yNwtsrWrl2LgoICPP7449i7dy+GDx+OcePG4csvv5Q8/h//+AemTp2Ke+65B/v27cOkSZMwadIkHDx4MMJnrp7W1wi0l7Hyfr8+++yzCJ6xNs3NzRg+fDiWL1+u6vjjx4/jlltuwU9/+lPs378fDz74IO699168//77Op9p8LS+RlFVVZXP+9irVy+dzjA0f//73/HAAw+grKwMW7duRVtbG2666aaAOwEZ5loUSNaqVauExMRExePcbreQmpoqPPvss57bzp07J8THxwuvv/66jmeoXWVlpQBA2L17t+e29957T3A4HMLp06dl73f99dcLc+bMicAZapeVlSU88MADnt9dLpfQu3dvobCwUPL4X/ziF8Itt9zic1t2drbwq1/9StfzDIXW16j2s2tEAIQNGzYEPOY3v/mN8OMf/9jntsmTJwvjxo3T8czCR81r/PDDDwUAwtdffx2Rcwq3L7/8UgAg/P3vf5c9xijXInuEYXD8+HHU1NQgLy/Pc1tiYiKys7NRWloaxTPrqLS0FElJScjMzPTclpeXB6fTifLy8oD3fe2119CjRw8MGzYM8+bNw4ULF/Q+XUWtra3Ys2ePz//e6XQiLy9P9n9fWlrqczwAjBs3znDvlSiY1wgATU1NuOyyy5Ceno6JEyfi0KFDkTjdiDDbexiKESNGIC0tDTfeeCN27doV7dNRraGhAQCQnJwse4xR3kfL7T4RDeKYfUpKis/tKSkphhvPr6mp6TC0Ehsbi+Tk5IDnescdd+Cyyy5D79698a9//QuPPvooqqqq8Ne//lXvUw7o7NmzcLlckv/7I0eOSN6npqbGFO+VKJjXOGjQIKxcuRJXXXUVGhoasGTJEowePRqHDh3SZXeWSJN7DxsbG/HNN9/gkksuidKZhU9aWhqKioqQmZmJlpYW/OlPf8KYMWNQXl6OUaNGRfv0AnK73XjwwQdxzTXXYNiwYbLHGeVatE0gnDt3LhYvXhzwmMOHD2Pw4MEROqPwUvv6guU9h3jllVciLS0NY8eOxbFjx9C/f/+gH5f0kZOTg5ycHM/vo0ePxpAhQ/B///d/WLRoURTPjNQaNGgQBg0a5Pl99OjROHbsGJ5//nn8v//3/6J4ZsoeeOABHDx4EDt37oz2qahim0D48MMP4+677w54zOWXXx7UY6empgIAamtrkZaW5rm9trYWI0aMCOoxtVL7+lJTUzsssLh48SLq6+s9r0ON7OxsAMDRo0ejGgh79OiBmJgY1NbW+txeW1sr+3pSU1M1HR9twbxGf506dcLIkSNx9OhRPU4x4uTew4SEBEv0BuVkZWUZPrjk5+d7FuEpjT4Y5Vq0zRxhz549MXjw4IA/cXFxQT12v379kJqaim3btnlua2xsRHl5uU+rXE9qX19OTg7OnTuHPXv2eO67fft2uN1uT3BTY//+/QDgE/ijIS4uDhkZGT7/e7fbjW3btsn+73NycnyOB4CtW7dG7L3SKpjX6M/lcuHAgQNRf7/CxWzvYbjs37/fsO+hIAjIz8/Hhg0bsH37dvTr10/xPoZ5HyO6NMckPvvsM2Hfvn3CwoULhW7dugn79u0T9u3bJ5w/f95zzKBBg4S//vWvnt+feeYZISkpSdi4caPwr3/9S5g4caLQr18/4ZtvvonGSwho/PjxwsiRI4Xy8nJh586dwhVXXCFMnTrV8/fPP/9cGDRokFBeXi4IgiAcPXpUePLJJ4WPP/5YOH78uLBx40bh8ssvF3Jzc6P1Eny88cYbQnx8vLB69WqhsrJSmD17tpCUlCTU1NQIgiAId955pzB37lzP8bt27RJiY2OFJUuWCIcPHxYef/xxoVOnTsKBAwei9RIUaX2NCxcuFN5//33h2LFjwp49e4QpU6YInTt3Fg4dOhStlxDQ+fPnPdcZAGHp0qXCvn37hM8++0wQBEGYO3eucOedd3qO//TTT4UuXboIjzzyiHD48GFh+fLlQkxMjFBcXBytl6BI62t8/vnnhbfffluorq4WDhw4IMyZM0dwOp3CBx98EK2XEND9998vJCYmCiUlJcKZM2c8PxcuXPAcY9RrkYFQwvTp0wUAHX4+/PBDzzEAhFWrVnl+d7vdwvz584WUlBQhPj5eGDt2rFBVVRX5k1ehrq5OmDp1qtCtWzchISFBmDFjhk+QP378uM/rPXnypJCbmyskJycL8fHxwoABA4RHHnlEaGhoiNIr6OjFF18UfvSjHwlxcXFCVlaWUFZW5vnb9ddfL0yfPt3n+DfffFMYOHCgEBcXJ/z4xz8WtmzZEuEz1k7La3zwwQc9x6akpAg333yzsHfv3iictTpiqoD/j/iapk+fLlx//fUd7jNixAghLi5OuPzyy32uRyPS+hoXL14s9O/fX+jcubOQnJwsjBkzRti+fXt0Tl4Fqdfm/z1p1GuR+xESEZGt2WaOkIiISAoDIRER2RoDIRER2RoDIRER2RoDIRER2RoDIRER2RoDIRER2RoDIRER2RoDIRER2RoDIRER2RoDIRER2dr/B32Jx+qEyLRAAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 39
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-08-14T07:09:52.846026Z",
     "start_time": "2025-08-14T07:09:52.721346Z"
    }
   },
   "cell_type": "code",
   "source": "plt.plot(lossi)",
   "id": "4ddecbc380bae62",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1eece5e74d0>]"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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Tz2l/v37a+vWrbrtttt07rnnas2aNaqqqlJCQoJSU1ODlvF4PKqqqpIkVVVVNTvOg68dq43X69XevXuVlJQUptEd6WBNzdVzaL3p6elBr8fFxalLly5BbXr16nVEHwdf69y581HHfbCPcLnooov07//+7+rVq5e++OIL3XzzzRozZoxKS0sVGxsbUePz+/269tprdfbZZ2vgwIGB9bfF+/K7774L++e4ufFJ0uWXX66ePXuqW7du+uSTT3TTTTepoqJCzz//fMSMb/Xq1crNzdW+ffvUsWNHvfDCCzr11FNVXl4eFdvvaOOTomP7zZ8/XytXrtRHH310xGuR+Bl0ZBiJJGPGjAn8PnjwYOXk5Khnz5565pln2jQkoPX8+te/Dvw+aNAgDR48WL1799ayZcs0evRoi5WFburUqVqzZo3effdd26WExdHGd9VVVwV+HzRokDIzMzV69Gh98cUX6t27d1uX+YP0799f5eXlqqmp0XPPPaeJEyfqrbfesl1Wqzna+E499dSI336bN2/WtGnTtHTpUiUmJtoup1U48jBNWlqaYmNjjzizuLq6WhkZGZaqapnU1FT169dPGzZsUEZGhhoaGrRr166gNoeOIyMjo9lxHnztWG2Sk5PbPPAcrOlY2yYjI0Pbtm0Ler2pqUk7d+5slXG39Xvg5JNPVlpamjZs2BCoKxLGd8011+jll1/Wm2++qZNOOikwv63el+H+HB9tfM3JycmRpKBt2N7Hl5CQoD59+mj48OEqLi7WkCFD9Ne//jVqtt/RxtecSNt+ZWVl2rZtm04//XTFxcUpLi5Ob731lv72t78pLi5OHo8n4rahI8NIQkKChg8frpKSksA8v9+vkpKSoGOK7dHu3bv1xRdfKDMzU8OHD1d8fHzQOCoqKlRZWRkYR25urlavXh305bZ06VIlJycHdlnm5uYG9XGwjY1/i169eikjIyOoHq/Xqw8//DBoTLt27VJZWVmgzRtvvCG/3x/4TyU3N1dvv/22GhsbA22WLl2q/v37q3PnzoE27WHcX3/9tb799ltlZmYG6mrP4zPG6JprrtELL7ygN95444jDRW31vgzX5/h442tOeXm5JAVtw/Y6vqPx+/2qr6+P+O13vPE1J9K23+jRo7V69WqVl5cHphEjRmj8+PGB3yNuG4Z0umsUmT9/vnG73eapp54ya9euNVdddZVJTU0NOrO4Pbj++uvNsmXLzMaNG817771n8vLyTFpamtm2bZsxZv/lWz169DBvvPGGWbFihcnNzTW5ubmB5Q9evnXhhRea8vJys2TJEtO1a9dmL9+64YYbzLp168zcuXPDemlvbW2tWbVqlVm1apWRZO6//36zatUq89VXXxlj9l/am5qaal588UXzySefmEsuuaTZS3uHDRtmPvzwQ/Puu++avn37Bl36umvXLuPxeMwVV1xh1qxZY+bPn286dOhwxKWvcXFx5t577zXr1q0zs2bNapVLX481vtraWvOHP/zBlJaWmo0bN5rXX3/dnH766aZv375m3759ETG+q6++2qSkpJhly5YFXRq5Z8+eQJu2el+G43N8vPFt2LDB3H777WbFihVm48aN5sUXXzQnn3yyGTVqVESMzxhjpk+fbt566y2zceNG88knn5jp06cbl8tlXnvtNWNMZG+/440vGrZfcw6/QijStqFjw4gxxjzwwAOmR48eJiEhwYwcOdJ88MEHtks6QkFBgcnMzDQJCQmme/fupqCgwGzYsCHw+t69e83vfvc707lzZ9OhQwfz85//3GzdujWoj02bNpkxY8aYpKQkk5aWZq6//nrT2NgY1ObNN980Q4cONQkJCebkk082Tz75ZNjG9OabbxpJR0wTJ040xuy/vHfGjBnG4/EYt9ttRo8ebSoqKoL6+Pbbb81ll11mOnbsaJKTk82kSZNMbW1tUJuPP/7YnHPOOcbtdpvu3bub2bNnH1HLM888Y/r162cSEhLMaaedZhYtWhTW8e3Zs8dceOGFpmvXriY+Pt707NnTTJ48+YgPbnseX3NjkxT0nmnL92Vrf46PN77KykozatQo06VLF+N2u02fPn3MDTfcEHSfivY8PmOM+c1vfmN69uxpEhISTNeuXc3o0aMDQcSYyN5+xxtfNGy/5hweRiJtG7qMMSa0fSkAAACtx5HnjAAAgPaDMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMCq/w/rDm86RRb1CgAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 40
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-08-14T07:11:59.370354Z",
     "start_time": "2025-08-14T07:11:59.293488Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 平均点代表损失\n",
    "plt.plot(torch.tensor(lossi).view(-1, 100).mean(dim=-1))"
   ],
   "id": "a6e948d1a693c3b5",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1eed6f3b210>]"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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1VVXxV9tAjBnBACAxHLG0/j48eMKBoPyer0x271er955551e92tsbNSkSZPU1tYmh8OhH//4x7r22mt7bd/W1qa2trboc7/fH0+Z54U5IwAAJFZcYaS/0tPTVV1drZMnT6qyslJlZWWaPn26PvrRj/bYvqKiQvfee28iSjvDmNHhRc84TQMAQELEFUays7PlcDhUV1cXs72urk65ubm97me32zVz5kxJUkFBgXbt2qWKiopew0h5ebnKysqiz/1+v/Ly8uIptd9y0lMkdYaR1vagUlyOhHwuAADJKq45I263W4WFhaqsrIxuC4VCqqysVHFxcZ/fJxQKxZyGOZ3H41FGRkbMI1HGpLqUHr4/TW19S8I+FwCAZBX3aZqysjItXbpUCxYs0MKFC7V69Wo1NzertLRUkrRkyRJNmjRJFRUVkjpPuSxYsEAzZsxQW1ubnnnmGf3yl7/UI488MrA9GSA2m01Ts1P15iG/Dpxo0SxvutUlAQAwosUdRhYvXqxjx45p5cqV8vl8Kigo0KZNm6KTWmtqamS3dw24NDc36ytf+YoOHjyoUaNGafbs2frVr36lxYsXD1wvBtjUsaP15iG/9p9otroUAABGPJsxxlhdxLn4/X5lZmaqsbExIads/nvTO/rx5r1aUjxV9900d9A/DwCAkaivf7+5N00Ppo5LlSTtP8GcEQAABhthpAdTx42WJB3gNA0AAIOOMNKD/HAYOfTBKbUHQxZXAwDAyEYY6UFOukfpHqc6Qka7fU1WlwMAwIhGGOmB3W7TwmljJUmv7D1ucTUAAIxshJFeXDEzW5L09z0nLK4EAICRjTDSiytmjJMkvba/XoEO5o0AADBYCCO9uNCbrnGj3WoJBLV591GrywEAYMQijPTCbrfpXxZ03pxvzQt7NAzWhgMAYFgijJzFv145TSkuu9442Kjfv37Q6nIAABiRCCNnkZ3m0R1Xz5QklT+5U+v+9r5a24MWVwUAwMjCvWnOIRQy+sbjb+iJbYckSekepwqmZGl2brryxqYqK9WtMakujUl1KyvVpTSPU6lup9xOch4AILn19e83YaQPQiGjx7ce1Oq/vqvDja192sdptynV7dBoj1OpbodS3c7Tnjs0yuWQx+WQx2kPPxzyuLp977SHnzui29yRti673A57+LlDLodNNpttkH8SAAD0HWFkEIRCRjsPNert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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 42
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-08-14T07:17:06.981365Z",
     "start_time": "2025-08-14T07:17:06.906685Z"
    }
   },
   "cell_type": "code",
   "source": "plt.plot([sum(lossi[i: i + 100]) / len(lossi[i: i + 100]) for i in range(0, len(lossi), 100) if len(lossi[i: i + 100]) != 0])",
   "id": "d26ea3a49f273ddb",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1eeda441690>]"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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1VVXxV9tAjBnBACAxHLG0/j48eMKBoPyer0x271er955551e92tsbNSkSZPU1tYmh8OhH//4x7r22mt7bd/W1qa2trboc7/fH0+Z54U5IwAAJFZcYaS/0tPTVV1drZMnT6qyslJlZWWaPn26PvrRj/bYvqKiQvfee28iSjvDmNHhRc84TQMAQELEFUays7PlcDhUV1cXs72urk65ubm97me32zVz5kxJUkFBgXbt2qWKiopew0h5ebnKysqiz/1+v/Ly8uIptd9y0lMkdYaR1vagUlyOhHwuAADJKq45I263W4WFhaqsrIxuC4VCqqysVHFxcZ/fJxQKxZyGOZ3H41FGRkbMI1HGpLqUHr4/TW19S8I+FwCAZBX3aZqysjItXbpUCxYs0MKFC7V69Wo1NzertLRUkrRkyRJNmjRJFRUVkjpPuSxYsEAzZsxQW1ubnnnmGf3yl7/UI488MrA9GSA2m01Ts1P15iG/Dpxo0SxvutUlAQAwosUdRhYvXqxjx45p5cqV8vl8Kigo0KZNm6KTWmtqamS3dw24NDc36ytf+YoOHjyoUaNGafbs2frVr36lxYsXD1wvBtjUsaP15iG/9p9otroUAABGPJsxxlhdxLn4/X5lZmaqsbExIads/nvTO/rx5r1aUjxV9900d9A/DwCAkaivf7+5N00Ppo5LlSTtP8GcEQAABhthpAdTx42WJB3gNA0AAIOOMNKD/HAYOfTBKbUHQxZXAwDAyEYY6UFOukfpHqc6Qka7fU1WlwMAwIhGGOmB3W7TwmljJUmv7D1ucTUAAIxshJFeXDEzW5L09z0nLK4EAICRjTDSiytmjJMkvba/XoEO5o0AADBYCCO9uNCbrnGj3WoJBLV591GrywEAYMQijPTCbrfpXxZ03pxvzQt7NAzWhgMAYFgijJzFv145TSkuu9442Kjfv37Q6nIAABiRCCNnkZ3m0R1Xz5QklT+5U+v+9r5a24MWVwUAwMjCvWnOIRQy+sbjb+iJbYckSekepwqmZGl2brryxqYqK9WtMakujUl1KyvVpTSPU6lup9xOch4AILn19e83YaQPQiGjx7ce1Oq/vqvDja192sdptynV7dBoj1OpbodS3c7Tnjs0yuWQx+WQx2kPPxzyuLp977SHnzui29yRti673A57+LlDLodNNpttkH8SAAD0HWFkEIRCRjsPNert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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 52
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
